Methods and systems for ranking, filtering and patching detected vulnerabilities in a networked system

ABSTRACT

Systems and methods for determining priority levels to process vulnerabilities associated with a networked computer system can include a data collection engine receiving a plurality of specification profiles, each defining one or more specification variables of the networked computer system or a respective asset. The data collection engine can receive, from a vulnerability scanner, vulnerability data indicative of a vulnerability associated with the networked computer system. A profiling engine can interrogate a computing device of the networked computer system, and receive one or more respective profiling parameters from that computing device. A ranking engine can compute a priority ranking value of the computing device based on the profile specification variables, the vulnerability data and the profiling parameters. The priority ranking value associated with the computing device can be indicative of a priority level, compared to other computing devices of the computer network, for patching a vulnerability affecting that computing device.

FIELD OF THE DISCLOSURE

The present application relates generally to systems and methods formonitoring and managing the security health of a computer environment.Specifically, the present application relates to detecting and managingvulnerabilities in a computer environment.

BACKGROUND

Most institutions rely on their computer systems to execute dailybusiness operations. In particular, government institutions,corporations, financial institutions, hospitals, universities, nonprofitorganizations and/or other businesses can use their computer systems tomaintain and manage business data, execute transactions or offeredservices, automate processes, machines or devices, or monitor andcontrol “critical infrastructure,” such as communications networks,power grids, power plants, or weather, aviation or military radarsystems. For instance, power grids, medical devices, and/ormanufacturing machinery can be automated via computer systems. Also,financial institutions execute transactions with their customers orother institutions electronically. Furthermore, business records,archives, customer information, or other business related data are nowstored electronically.

The functional importance and business value of computer systems forrespective institutions and their customers call for operationalreliability and enhanced cyber security of such computer systems. Manyinstitutions spend substantial amounts of money and resources to securetheir computer systems from intruders, hackers, viruses and/or otherthreats, and to comply with local regulations pertaining to securingcomputer systems. For instance, computer systems employ firewalls,antivirus and malware protection software, data encryption, securecommunication channels, and/or other cyber security measures. Also, manybusinesses and institutions invest substantially in computer resourcesand information technology (IT) work force to guarantee continuousavailability of their systems and services to potential customers.However, the increased complexity of many computer systems and/or theincreasingly sophisticated cyber security threats make many computersystems vulnerable to cyber security attacks, even when such measuresare employed, and system or services' outage (e.g., one or more serversor applications going down).

SUMMARY

According to one aspect, a system for determining priority levels foraddressing vulnerabilities associated with a network of computer devicescan include one or more servers communicatively coupled to a computernetwork. The computer network can include a plurality of communicativelycoupled computing devices. The one or more servers can include a datacollection engine, a profiling engine, and a ranking engine. The datacollection engine can receive a plurality of specification profiles ofthe computer network. Each of the specification profiles can define oneor more specification variables of the computer network or a respectiveasset. The data collection engine can receive vulnerability data from avulnerability scanner configured to scan the computer network forvulnerabilities. The vulnerability data can be indicative of avulnerability associated with the computer network. The profiling enginecan establish, for each of one or more computing devices of the computernetwork, a respective communication channel, and receive one or morerespective profiling parameters from that computing device, via therespective communication channel. The ranking engine can compute, foreach of a plurality of computing devices of the computer networkaffected with the vulnerability, a respective priority ranking valueusing the profile specification variables, the vulnerability data andthe profiling parameters received by the profiling engine. The priorityranking value associated with each computing device affected with thevulnerability can be indicative of a priority level, compared to othercomputing devices of the computer network, for fixing the vulnerabilityin that computing device.

According to one other aspect, a method of determining priority levelsfor addressing vulnerabilities associated with a network of computerdevices can include one or more computer servers communicatively coupledto a computer network receiving a plurality of specification profilesassociated with the computer network. Each of the specification profilesdefining one or more specification variables of the computer network ora respective asset. The one or more computer servers can receivevulnerability data from a vulnerability scanner configured to scan thecomputer network for vulnerabilities. The vulnerability data can beindicative of a vulnerability associated with the computer network. Theone or more computer servers can establish a communication channel witha computing device of the computer network, and receive one or moreprofiling parameters from the computing device via the communicationchannel. The one or more computer servers can compute for each of aplurality of computing devices of the computer network affected with thevulnerability, a respective priority ranking value using the profilespecification variables, the vulnerability data and the one or moreprofiling parameters. The priority ranking value for each computingdevice affected with the vulnerability can be indicative of a prioritylevel, compared to other computing devices of the computer network, forfixing the vulnerability in that computing device.

According to another aspect, a computer-readable medium can includecomputer code instructions stored thereon, which when executed by one ormore processors, cause the one or more processors to receive a pluralityof specification profiles associated with a computer network. Each ofthe specification profiles defines one or more specification variablesof the computer network or an asset thereof. Execution of the computercode instructions can cause the one or more processors to receivevulnerability data from a vulnerability scanner configured to scan thecomputer network for vulnerabilities. The vulnerability data can beindicative of a vulnerability associated with the computer network. Theexecution of the computer code instructions can cause the one or moreprocessors to establish a communication channel with a computing deviceof the computer network, and receive one or more profiling parametersfrom the computing device via the communication channel. The executionof the computer code instructions can cause the one or more processorsto compute, for each of a plurality of computing devices of the computernetwork affected with the vulnerability, a respective priority rankingvalue using the profile specification variables, the vulnerability dataand the one or more profiling parameters. The priority ranking valueassociated with each computing device affected with the vulnerabilitycan be indicative of a priority level, compared to other computingdevices of the computer network, for fixing the vulnerability in thatcomputing device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a block diagram depicting an embodiment of a computing andnetwork environment.

FIGS. 1B-1D are block diagrams depicting embodiments of computers usefulin connection with the methods and systems described herein.

FIG. 2 is a block diagram illustrating an embodiment of an environmentfor monitoring and managing cyber security aspects of a computing andnetwork environment.

FIG. 3 shows an embodiment of an architecture of a computer environmentmonitoring and management (CEMM) system.

FIGS. 4A and 4B show a diagram and a table, respectively, illustratingan embodiment of mapping similar cyber security data items from variousdata sources to one another.

FIG. 5 shows examples of specification profiles associated with an assetof a computing and network environment.

FIG. 6 shows a flowchart illustrating an asset profiling method.

FIG. 7 shows a signaling diagram illustrating a method of establishing acommunication link (or channel) with a data source and acquiring datavia that communication link.

FIGS. 8A-8C show screen shots of user interface (UI) componentscorresponding to various visual modes of a display system.

FIG. 9 shows a flowchart illustrating a method for monitoring andassessing a state of operation of the computing and network environment.

FIG. 10 shows a diagram illustrating a decision profiling treeindicative of a context-based hierarchical profiling scheme.

FIG. 11 shows a flowchart illustrating a method for determining prioritylevels for processing vulnerabilities associated with the computing andnetwork environment.

FIG. 12 shows a signaling diagram illustrating a method of acquiringdata for display.

FIG. 13 is a block diagram illustrating data blocks and data sub-blocksincluding data for display.

DETAILED DESCRIPTION

For purposes of reading the description of the various embodimentsbelow, the following descriptions of the sections of the specificationand their respective contents may be helpful:

Section A describes a computing and network environment which may beuseful for practicing embodiments described herein.

Section B describes an embodiment of a computer environment monitoringand management (CEMM) system architecture.

Section C describes systems and methods for situational awarenessassessment. Section D describes systems and methods for monitoring andmanaging vulnerability. Section E describes systems and methods for amulti-layered cache used to display data.

A. Computing and Network Environment

In addition to discussing specific embodiments of the present solution,it may be helpful to describe aspects of the operating environment aswell as associated system components (e.g., hardware elements) inconnection with the methods and systems described herein. Referring toFIG. 1A, an embodiment of a computing and network environment 10 isdepicted. In brief overview, the computing and network environmentincludes one or more clients 102 a-102 n (also generally referred to aslocal machine(s) 102, client(s) 102, client node(s) 102, clientmachine(s) 102, client computer(s) 102, client device(s) 102,endpoint(s) 102, or endpoint node(s) 102) in communication with one ormore servers 106 a-106 n (also generally referred to as server(s) 106,node 106, or remote machine(s) 106) via one or more networks 104. Insome embodiments, a client 102 has the capacity to function as both aclient node seeking access to resources provided by a server and as aserver providing access to hosted resources for other clients 102 a-102n.

Although FIG. 1A shows a network 104 between the clients 102 and theservers 106, the clients 102 and the servers 106 may be on the samenetwork 104. In some embodiments, there are multiple networks 104between the clients 102 and the servers 106. In one of theseembodiments, a network 104′ (not shown) may be a private network and anetwork 104 may be a public network. In another of these embodiments, anetwork 104 may be a private network and a network 104′ a publicnetwork. In still another of these embodiments, networks 104 and 104′may both be private networks.

The network 104 may be connected via wired or wireless links. Wiredlinks may include Digital Subscriber Line (DSL), coaxial cable lines, oroptical fiber lines. The wireless links may include BLUETOOTH, Wi-Fi,Worldwide Interoperability for Microwave Access (WiMAX), an infraredchannel or satellite band. The wireless links may also include anycellular network standards used to communicate among mobile devices,including standards that qualify as 1G, 2G, 3G, or 4G. The networkstandards may qualify as one or more generation of mobiletelecommunication standards by fulfilling a specification or standardssuch as the specifications maintained by International TelecommunicationUnion. The 3G standards, for example, may correspond to theInternational Mobile Telecommunications-2000 (IMT-2000) specification,and the 1G standards may correspond to the International MobileTelecommunications Advanced (IMT-Advanced) specification. Examples ofcellular network standards include AMPS, GSM, GPRS, UMTS, LTE, LTEAdvanced, Mobile WiMAX, and WiMAX-Advanced. Cellular network standardsmay use various channel access methods e.g. FDMA, TDMA, CDMA, or SDMA.In some embodiments, different types of data may be transmitted viadifferent links and standards. In other embodiments, the same types ofdata may be transmitted via different links and standards.

The network 104 may be any type and/or form of network. The geographicalscope of the network 104 may vary widely and the network 104 can be abody area network (BAN), a personal area network (PAN), a local-areanetwork (LAN), e.g. Intranet, a metropolitan area network (MAN), a widearea network (WAN), or the Internet. The topology of the network 104 maybe of any form and may include, e.g., any of the following:point-to-point, bus, star, ring, mesh, or tree. The network 104 may bean overlay network which is virtual and sits on top of one or morelayers of other networks 104′. The network 104 may be of any suchnetwork topology as known to those ordinarily skilled in the art capableof supporting the operations described herein. The network 104 mayutilize different techniques and layers or stacks of protocols,including, e.g., the Ethernet protocol, the internet protocol suite(TCP/IP), the ATM (Asynchronous Transfer Mode) technique, the SONET(Synchronous Optical Networking) protocol, or the SDH (SynchronousDigital Hierarchy) protocol. The TCP/IP internet protocol suite mayinclude application layer, transport layer, internet layer (including,e.g., IPv6), or the link layer. The network 104 may be a type of abroadcast network, a telecommunications network, a data communicationnetwork, or a computer network.

In some embodiments, the computing and network environment 10 mayinclude multiple, logically-grouped servers 106. In one of theseembodiments, the logical group of servers may be referred to as a serverfarm 38 or a machine farm 38. In another of these embodiments, theservers 106 may be geographically dispersed. In other embodiments, amachine farm 38 may be administered as a single entity. In still otherembodiments, the machine farm 38 includes a plurality of machine farms38. The servers 106 within each machine farm 38 can be heterogeneous—oneor more of the servers 106 or machines 106 can operate according to onetype of operating system platform (e.g., WINDOWS 8 or 10, manufacturedby Microsoft Corp. of Redmond, Wash.), while one or more of the otherservers 106 can operate on according to another type of operating systemplatform (e.g., Unix, Linux, or Mac OS X).

In one embodiment, servers 106 in the machine farm 38 may be stored inhigh-density rack systems, along with associated storage systems, andlocated in an enterprise data center. In this embodiment, consolidatingthe servers 106 in this way may improve system manageability, datasecurity, the physical security of the system, and system performance bylocating servers 106 and high performance storage systems on localizedhigh performance networks. Centralizing the servers 106 and storagesystems and coupling them with advanced system management tools allowsmore efficient use of server resources.

The servers 106 of each machine farm 38 do not need to be physicallyproximate to another server 106 in the same machine farm 38. Thus, thegroup of servers 106 logically grouped as a machine farm 38 may beinterconnected using a wide-area network (WAN) connection or ametropolitan-area network (MAN) connection. For example, a machine farm38 may include servers 106 physically located in different continents ordifferent regions of a continent, country, state, city, campus, or room.Data transmission speeds between servers 106 in the machine farm 38 canbe increased if the servers 106 are connected using a local-area network(LAN) connection or some form of direct connection. Additionally, aheterogeneous machine farm 38 may include one or more servers 106operating according to a type of operating system, while one or moreother servers 106 execute one or more types of hypervisors rather thanoperating systems. In these embodiments, hypervisors may be used toemulate virtual hardware, partition physical hardware, virtualizephysical hardware, and execute virtual machines that provide access tocomputing environments, allowing multiple operating systems to runconcurrently on a host computer. Native hypervisors may run directly onthe host computer. Hypervisors may include VMware ESX/ESXi, manufacturedby VMWare, Inc., of Palo Alto, Calif.; the Xen hypervisor, an opensource product whose development is overseen by Citrix Systems, Inc.;the HYPER-V hypervisors provided by Microsoft or others. Hostedhypervisors may run within an operating system on a second softwarelevel. Examples of hosted hypervisors may include VMware Workstation andVIRTUALBOX.

Management of the machine farm 38 may be de-centralized. For example,one or more servers 106 may comprise components, subsystems and modulesto support one or more management services for the machine farm 38. Inone of these embodiments, one or more servers 106 provide functionalityfor management of dynamic data, including techniques for handlingfailover, data replication, and increasing the robustness of the machinefarm 38. Each server 106 may communicate with a persistent store and, insome embodiments, with a dynamic store.

Server 106 may be a file server, application server, web server, proxyserver, appliance, network appliance, gateway, gateway server,virtualization server, deployment server, SSL VPN server, firewall,Internet of Things (IoT) controller. In one embodiment, the server 106may be referred to as a remote machine or a node. In another embodiment,a plurality of nodes 290 may be in the path between any twocommunicating servers.

Referring to FIG. 1B, a cloud computing environment is depicted. Thecloud computing environment can be part of the computing and networkenvironment 10. A cloud computing environment may provide client 102with one or more resources provided by the computing and networkenvironment 10. The cloud computing environment may include one or moreclients 102 a-102 n, in communication with the cloud 108 over one ormore networks 104. Clients 102 may include, e.g., thick clients, thinclients, and zero clients. A thick client may provide at least somefunctionality even when disconnected from the cloud 108 or servers 106.A thin client or a zero client may depend on the connection to the cloud108 or server 106 to provide functionality. A zero client may depend onthe cloud 108 or other networks 104 or servers 106 to retrieve operatingsystem data for the client device. The cloud 108 may include back endplatforms, e.g., servers 106, storage, server farms or data centers.

The cloud 108 may be public, private, or hybrid. Public clouds mayinclude public servers 106 that are maintained by third parties to theclients 102 or the owners of the clients. The servers 106 may be locatedoff-site in remote geographical locations as disclosed above orotherwise. Public clouds may be connected to the servers 106 over apublic network. Private clouds may include private servers 106 that arephysically maintained by clients 102 or owners of clients. Privateclouds may be connected to the servers 106 over a private network 104.Hybrid clouds 108 may include both the private and public networks 104and servers 106.

The cloud 108 may also include a cloud based delivery, e.g. Software asa Service (SaaS) 110, Platform as a Service (PaaS) 112, andInfrastructure as a Service (IaaS) 114. IaaS may refer to a user rentingthe use of infrastructure resources that are needed during a specifiedtime period. IaaS providers may offer storage, networking, servers orvirtualization resources from large pools, allowing the users to quicklyscale up by accessing more resources as needed. Examples of IaaS includeAMAZON WEB SERVICES provided by Amazon.com, Inc., of Seattle, Wash.,RACKSPACE CLOUD provided by Rackspace US, Inc., of San Antonio, Tex.,Google Compute Engine provided by Google Inc. of Mountain View, Calif,or RIGHTSCALE provided by RightScale, Inc., of Santa Barbara, Calif.PaaS providers may offer functionality provided by IaaS, including,e.g., storage, networking, servers or virtualization, as well asadditional resources such as, e.g., the operating system, middleware, orruntime resources. Examples of PaaS include WINDOWS AZURE provided byMicrosoft Corporation of Redmond, Wash., Google App Engine provided byGoogle Inc., and HEROKU provided by Heroku, Inc. of San Francisco,Calif. SaaS providers may offer the resources that PaaS provides,including storage, networking, servers, virtualization, operatingsystem, middleware, or runtime resources. In some embodiments, SaaSproviders may offer additional resources including, e.g., data andapplication resources. Examples of SaaS include GOOGLE APPS provided byGoogle Inc., SALESFORCE provided by Salesforce.com Inc. of SanFrancisco, Calif., or OFFICE 365 provided by Microsoft Corporation.Examples of SaaS may also include data storage providers, e.g. DROPBOXprovided by Dropbox, Inc. of San Francisco, Calif., Microsoft SKYDRIVEprovided by Microsoft Corporation, Google Drive provided by Google Inc.,or Apple ICLOUD provided by Apple Inc. of Cupertino, Calif.

Clients 102 may access IaaS resources with one or more IaaS standards,including, e.g., Amazon Elastic Compute Cloud (EC2), Open CloudComputing Interface (OCCI), Cloud Infrastructure Management Interface(CIMI), or OpenStack standards. Some IaaS standards may allow clientsaccess to resources over HTTP, and may use Representational StateTransfer (REST) protocol or Simple Object Access Protocol (SOAP).Clients 102 may access PaaS resources with different PaaS interfaces.Some PaaS interfaces use HTTP packages, standard Java APIs, JavaMailAPI, Java Data Objects (JDO), Java Persistence API (JPA), Python APIs,web integration APIs for different programming languages including,e.g., Rack for Ruby, WSGI for Python, or PSGI for Perl, or other APIsthat may be built on REST, HTTP, XML, or other protocols. Clients 102may access SaaS resources through the use of web-based user interfaces,provided by a web browser (e.g. GOOGLE CHROME, Microsoft INTERNETEXPLORER, or Mozilla Firefox provided by Mozilla Foundation of MountainView, Calif.). Clients 102 may also access SaaS resources throughsmartphone or tablet applications, including, for example, SalesforceSales Cloud, or Google Drive app. Clients 102 may also access SaaSresources through the client operating system, including, e.g., Windowsfile system for DROPB OX.

In some embodiments, access to IaaS, PaaS, or SaaS resources may beauthenticated. For example, a server or authentication server mayauthenticate a user via security certificates, HTTPS, or API keys. APIkeys may include various encryption standards such as, e.g., AdvancedEncryption Standard (AES). Data resources may be sent over TransportLayer Security (TLS) or Secure Sockets Layer (SSL).

The client 102 and server 106 may be deployed as and/or executed on anytype and form of computing device, e.g. a computer, network device orappliance capable of communicating on any type and form of network andperforming the operations described herein. FIGS. 1C and 1D depict blockdiagrams of a computing device 100 useful for practicing an embodimentof the client 102 or a server 106. As shown in FIGS. 1C and 1D, eachcomputing device 100 includes a central processing unit 121, and a mainmemory unit 122. As shown in FIG. 1C, a computing device 100 may includea storage device 128, an installation device 116, a network interface118, an I/O controller 123, display devices 124 a-124 n, a keyboard 126and a pointing device 127, e.g. a mouse. The storage device 128 mayinclude, without limitation, an operating system, software, and asoftware of a computer environment monitoring and management (CEMM)system 120. As shown in FIG. 1D, each computing device 100 may alsoinclude additional optional elements, e.g. a memory port 103, a bridge170, one or more input/output devices 130 a-130 n (generally referred tousing reference numeral 130), and a cache memory 140 in communicationwith the central processing unit 121.

The central processing unit 121 is any logic circuitry that responds toand processes instructions fetched from the main memory unit 122. Inmany embodiments, the central processing unit 121 is provided by amicroprocessor unit, e.g.: those manufactured by Intel Corporation ofMountain View, Calif.; those manufactured by Motorola Corporation ofSchaumburg, Ill.; the ARM processor and TEGRA system on a chip (SoC)manufactured by Nvidia of Santa Clara, Calif.; the POWER7 processor,those manufactured by International Business Machines of White Plains,N.Y.; or those manufactured by Advanced Micro Devices of Sunnyvale,Calif. The computing device 100 may be based on any of these processors,or any other processor capable of operating as described herein. Thecentral processing unit 121 may utilize instruction level parallelism,thread level parallelism, different levels of cache, and multi-coreprocessors. A multi-core processor may include two or more processingunits on a single computing component. Examples of a multi-coreprocessors include the AMD PHENOM IIX2, INTEL CORE i5 and INTEL CORE i7.

Main memory unit 122 may include one or more memory chips capable ofstoring data and allowing any storage location to be directly accessedby the microprocessor 121. Main memory unit 122 may be volatile andfaster than storage 128 memory. Main memory units 122 may be Dynamicrandom access memory (DRAM) or any variants, including static randomaccess memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Fast PageMode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM(EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended DataOutput DRAM (BEDO DRAM), Single Data Rate Synchronous DRAM (SDR SDRAM),Double Data Rate SDRAM (DDR SDRAM), Direct Rambus DRAM (DRDRAM), orExtreme Data Rate DRAM (XDR DRAM). In some embodiments, the main memory122 or the storage 128 may be non-volatile; e.g., non-volatile readaccess memory (NVRAM), flash memory non-volatile static RAM (nvSRAM),Ferroelectric RAM (FeRAM), Magnetoresistive RAM (MRAM), Phase-changememory (PRAM), conductive-bridging RAM (CBRAM),Silicon-Oxide-Nitride-Oxide-Silicon (SONOS), Resistive RAM (RRAM),Racetrack, Nano-RAM (NRAM), or Millipede memory. The main memory 122 maybe based on any of the above described memory chips, or any otheravailable memory chips capable of operating as described herein. In theembodiment shown in FIG. 1C, the processor 121 communicates with mainmemory 122 via a system bus 150 (described in more detail below). FIG.1D depicts an embodiment of a computing device 100 in which theprocessor communicates directly with main memory 122 via a memory port103. For example, in FIG. 1D the main memory 122 may be DRDRAM.

FIG. 1D depicts an embodiment in which the main processor 121communicates directly with cache memory 140 via a secondary bus,sometimes referred to as a backside bus. In other embodiments, the mainprocessor 121 communicates with cache memory 140 using the system bus150. Cache memory 140 typically has a faster response time than mainmemory 122 and is typically provided by SRAM, BSRAM, or EDRAM. In theembodiment shown in FIG. 1D, the processor 121 communicates with variousI/O devices 130 via a local system bus 150. Various buses may be used toconnect the central processing unit 121 to any of the I/O devices 130,including a PCI bus, a PCI-X bus, or a PCI-Express bus, or a NuBus. Forembodiments in which the I/O device is a video display 124, theprocessor 121 may use an Advanced Graphics Port (AGP) to communicatewith the display 124 or the I/O controller 123 for the display 124. FIG.1D depicts an embodiment of a computer 100 in which the main processor121 communicates directly with I/O device 130 b or other processors 121′via HYPERTRANSPORT, RAPIDIO, or INFINIBAND communications technology.FIG. 1D also depicts an embodiment in which local busses and directcommunication are mixed: the processor 121 communicates with I/O device130 a using a local interconnect bus while communicating with I/O device130 b directly.

A wide variety of I/O devices 130 a-130 n may be present in thecomputing device 100. Input devices may include keyboards, mice,trackpads, trackballs, touchpads, touch mice, multi-touch touchpads andtouch mice, microphones, multi-array microphones, drawing tablets,cameras, single-lens reflex camera (SLR), digital SLR (DSLR), CMOSsensors, accelerometers, infrared optical sensors, pressure sensors,magnetometer sensors, angular rate sensors, depth sensors, proximitysensors, ambient light sensors, gyroscopic sensors, or other sensors.Output devices may include video displays, graphical displays, speakers,headphones, inkjet printers, laser printers, and 3D printers.

Devices 130 a-130 n may include a combination of multiple input oroutput devices, including, e.g., Microsoft KINECT, Nintendo Wiimote forthe WII, Nintendo WII U GAMEPAD, or Apple IPHONE. Some devices 130 a-130n allow gesture recognition inputs through combining some of the inputsand outputs. Some devices 130 a-130 n provides for facial recognitionwhich may be utilized as an input for different purposes includingauthentication and other commands. Some devices 130 a-130 n provides forvoice recognition and inputs, including, e.g., Microsoft KINECT, SIRIfor IPHONE by Apple, Google Now or Google Voice Search.

Additional devices 130 a-130 n have both input and output capabilities,including, e.g., haptic feedback devices, touchscreen displays, ormulti-touch displays. Touchscreen, multi-touch displays, touchpads,touch mice, or other touch sensing devices may use differenttechnologies to sense touch, including, e.g., capacitive, surfacecapacitive, projected capacitive touch (PCT), in-cell capacitive,resistive, infrared, waveguide, dispersive signal touch (DST), in-celloptical, surface acoustic wave (SAW), bending wave touch (BWT), orforce-based sensing technologies.

Some multi-touch devices may allow two or more contact points with thesurface, allowing advanced functionality including, e.g., pinch, spread,rotate, scroll, or other gestures. Some touchscreen devices, including,e.g., Microsoft PIXELSENSE or Multi-Touch Collaboration Wall, may havelarger surfaces, such as on a table-top or on a wall, and may alsointeract with other electronic devices. Some I/O devices 130 a-130 n,display devices 124 a-124 n or group of devices may be augment realitydevices. The I/O devices may be controlled by an I/O controller 123 asshown in FIG. 1C. The I/O controller may control one or more I/Odevices, such as, e.g., a keyboard 126 and a pointing device 127, e.g.,a mouse or optical pen. Furthermore, an I/O device may also providestorage and/or an installation medium 116 for the computing device 100.In still other embodiments, the computing device 100 may provide USBconnections (not shown) to receive handheld USB storage devices. Infurther embodiments, an I/O device 130 may be a bridge between thesystem bus 150 and an external communication bus, e.g. a USB bus, a SCSIbus, a FireWire bus, an Ethernet bus, a Gigabit Ethernet bus, a FibreChannel bus, or a Thunderbolt bus.

In some embodiments, display devices 124 a-124 n may be connected to I/Ocontroller 123. Display devices may include, e.g., liquid crystaldisplays (LCD), thin film transistor LCD (TFT-LCD), blue phase LCD,electronic papers (e-ink) displays, flexile displays, light emittingdiode displays (LED), digital light processing (DLP) displays, liquidcrystal on silicon (LCOS) displays, organic light-emitting diode (OLED)displays, active-matrix organic light-emitting diode (AMOLED) displays,liquid crystal laser displays, time-multiplexed optical shutter (TMOS)displays, or 3D displays. Examples of 3D displays may use, e.g.stereoscopy, polarization filters, active shutters, or autostereoscopy.Display devices 124 a-124 n may also be a head-mounted display (HMD). Insome embodiments, display devices 124 a-124 n or the corresponding I/Ocontrollers 123 may be controlled through or have hardware support forOPENGL or DIRECTX API or other graphics libraries.

In some embodiments, the computing device 100 may include or connect tomultiple display devices 124 a-124 n, which each may be of the same ordifferent type and/or form. As such, any of the I/O devices 130 a-130 nand/or the I/O controller 123 may include any type and/or form ofsuitable hardware, software, or combination of hardware and software tosupport, enable or provide for the connection and use of multipledisplay devices 124 a-124 n by the computing device 100. For example,the computing device 100 may include any type and/or form of videoadapter, video card, driver, and/or library to interface, communicate,connect or otherwise use the display devices 124 a-124 n. In oneembodiment, a video adapter may include multiple connectors to interfaceto multiple display devices 124 a-124 n. In other embodiments, thecomputing device 100 may include multiple video adapters, with eachvideo adapter connected to one or more of the display devices 124 a-124n. In some embodiments, any portion of the operating system of thecomputing device 100 may be configured for using multiple displays 124a-124 n. In other embodiments, one or more of the display devices 124a-124 n may be provided by one or more other computing devices 100 a or100 b connected to the computing device 100, via the network 104. Insome embodiments software may be designed and constructed to use anothercomputer's display device as a second display device 124 a for thecomputing device 100. For example, in one embodiment, an Apple iPad mayconnect to a computing device 100 and use the display of the device 100as an additional display screen that may be used as an extended desktop.One ordinarily skilled in the art will recognize and appreciate thevarious ways and embodiments that a computing device 100 may beconfigured to have multiple display devices 124 a-124 n.

Referring again to FIG. 1C, the computing device 100 may comprise astorage device 128 (e.g. one or more hard disk drives or redundantarrays of independent disks) for storing an operating system or otherrelated software, and for storing application software programs such asany program related to the software for the computer environmentmonitoring and management (CEMM) system 120. Examples of storage device128 include, e.g., hard disk drive (HDD); optical drive including CDdrive, DVD drive, or BLU-RAY drive; solid-state drive (SSD); USB flashdrive; or any other device suitable for storing data. Some storagedevices may include multiple volatile and non-volatile memories,including, e.g., solid state hybrid drives that combine hard disks withsolid state cache. Some storage device 128 may be non-volatile, mutable,or read-only. Some storage device 128 may be internal and connect to thecomputing device 100 via a bus 150. Some storage device 128 may beexternal and connect to the computing device 100 via a I/O device 130that provides an external bus. Some storage device 128 may connect tothe computing device 100 via the network interface 118 over a network104, including, e.g., the Remote Disk for MACBOOK AIR by Apple. Someclient devices 100 may not require a non-volatile storage device 128 andmay be thin clients or zero clients 102. Some storage device 128 mayalso be used as an installation device 116, and may be suitable forinstalling software and programs. Additionally, the operating system andthe software can be run from a bootable medium, for example, a bootableCD, e.g. KNOPPIX, a bootable CD for GNU/Linux that is available as aGNU/Linux distribution from knoppix.net.

Client device 100 may also install software or application from anapplication distribution platform. Examples of application distributionplatforms include the App Store for iOS provided by Apple, Inc., the MacApp Store provided by Apple, Inc., GOOGLE PLAY for Android OS providedby Google Inc., Chrome Webstore for CHROME OS provided by Google Inc.,and Amazon Appstore for Android OS and KINDLE FIRE provided byAmazon.com, Inc. An application distribution platform may facilitateinstallation of software on a client device 102. An applicationdistribution platform may include a repository of applications on aserver 106 or a cloud 108, which the clients 102 a-102 n may access overa network 104. An application distribution platform may includeapplication developed and provided by various developers. A user of aclient device 102 may select, purchase and/or download an applicationvia the application distribution platform.

Furthermore, the computing device 100 may include a network interface118 to interface to the network 104 through a variety of connectionsincluding, but not limited to, standard telephone lines LAN or WAN links(e.g., 802.11, T1, T3, Gigabit Ethernet, Infiniband), broadbandconnections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet,Ethernet-over-SONET, ADSL, VDSL, BPON, GPON, fiber optical includingFiOS), wireless connections, or some combination of any or all of theabove. Connections can be established using a variety of communicationprotocols (e.g., TCP/IP, Ethernet, ARCNET, SONET, SDH, Fiber DistributedData Interface (FDDI), IEEE 802.11a/b/g/n/ac CDMA, GSM, WiMax and directasynchronous connections). In one embodiment, the computing device 100communicates with other computing devices 100′ via any type and/or formof gateway or tunneling protocol e.g. Secure Socket Layer (SSL) orTransport Layer Security (TLS), or the Citrix Gateway Protocolmanufactured by Citrix Systems, Inc. of Ft. Lauderdale, Fla. The networkinterface 118 may comprise a built-in network adapter, network interfacecard, PCMCIA network card, EXPRESSCARD network card, card bus networkadapter, wireless network adapter, USB network adapter, modem or anyother device suitable for interfacing the computing device 100 to anytype of network capable of communication and performing the operationsdescribed herein.

A computing device 100 of the sort depicted in FIGS. 1B and 1C mayoperate under the control of an operating system, which controlsscheduling of tasks and access to system resources. The computing device100 can be running any operating system such as any of the versions ofthe MICROSOFT WINDOWS operating systems, the different releases of theUnix and Linux operating systems, any version of the MAC OS forMacintosh computers, any embedded operating system, any real-timeoperating system, any open source operating system, any proprietaryoperating system, any operating systems for mobile computing devices, orany other operating system capable of running on the computing deviceand performing the operations described herein. Typical operatingsystems include, but are not limited to: WINDOWS 2000, WINDOWS Server2012, WINDOWS CE, WINDOWS Phone, WINDOWS XP, WINDOWS VISTA, and WINDOWS7, WINDOWS RT, and WINDOWS 8 all of which are manufactured by MicrosoftCorporation of Redmond, Wash.; MAC OS and iOS, manufactured by Apple,Inc. of Cupertino, Calif.; and Linux, a freely-available operatingsystem, e.g. Linux Mint distribution (“distro”) or Ubuntu, distributedby Canonical Ltd. of London, United Kingdom; or Unix or other Unix-likederivative operating systems; and Android, designed by Google, ofMountain View, Calif., among others. Some operating systems, including,e.g., the CHROME OS by Google, may be used on zero clients or thinclients, including, e.g., CHROMEBOOKS.

The computer system 100 can be any workstation, telephone, desktopcomputer, laptop or notebook computer, netbook, ULTRABOOK, tablet,server, handheld computer, mobile telephone, smartphone or otherportable telecommunications device, media playing device, a gamingsystem, mobile computing device, or any other type and/or form ofcomputing, telecommunications or media device that is capable ofcommunication. The computer system 100 has sufficient processor powerand memory capacity to perform the operations described herein. In someembodiments, the computing device 100 may have different processors,operating systems, and input devices consistent with the device. TheSamsung GALAXY smartphones, e.g., operate under the control of Androidoperating system developed by Google, Inc. GALAXY smartphones receiveinput via a touch interface.

In some embodiments, the computing device 100 is a gaming system. Forexample, the computer system 100 may comprise a PLAYSTATION 3, orPERSONAL PLAYSTATION PORTABLE (PSP), or a PLAYSTATION VITA devicemanufactured by the Sony Corporation of Tokyo, Japan, a NINTENDO DS,NINTENDO 3DS, NINTENDO WII, or a NINTENDO WII U device manufactured byNintendo Co., Ltd., of Kyoto, Japan, an XBOX 360 device manufactured bythe Microsoft Corporation of Redmond, Wash.

In some embodiments, the computing device 100 is a digital audio playersuch as the Apple IPOD, IPOD Touch, and IPOD NANO lines of devices,manufactured by Apple Computer of Cupertino, Calif. Some digital audioplayers may have other functionality, including, e.g., a gaming systemor any functionality made available by an application from a digitalapplication distribution platform. For example, the IPOD Touch mayaccess the Apple App Store. In some embodiments, the computing device100 is a portable media player or digital audio player supporting fileformats including, but not limited to, MP3, WAV, M4A/AAC, WMA ProtectedAAC, AIFF, Audible audiobook, Apple Lossless audio file formats and.mov, .m4v, and .mp4 MPEG-4 (H.264/MPEG-4 AVC) video file formats.

In some embodiments, the computing device 100 is a tablet e.g. the IPADline of devices by Apple; GALAXY TAB family of devices by Samsung; orKINDLE FIRE, by Amazon.com, Inc. of Seattle, Wash. In other embodiments,the computing device 100 is a eBook reader, e.g. the KINDLE family ofdevices by Amazon.com, or NOOK family of devices by Barnes & Noble, Inc.of New York City, N.Y.

In some embodiments, the communications device 102 includes acombination of devices, e.g. a smartphone combined with a digital audioplayer or portable media player. For example, one of these embodimentsis a smartphone, e.g. the IPHONE family of smartphones manufactured byApple, Inc.; a Samsung GALAXY family of smartphones manufactured bySamsung, Inc.; or a Motorola DROID family of smartphones. In yet anotherembodiment, the communications device 102 is a laptop or desktopcomputer equipped with a web browser and a microphone and speakersystem, e.g. a telephony headset. In these embodiments, thecommunications devices 102 are web-enabled and can receive and initiatephone calls. In some embodiments, a laptop or desktop computer is alsoequipped with a webcam or other video capture device that enables videochat and video call.

In some embodiments, the status of one or more machines 102, 106 in thenetwork 104 is monitored, generally as part of network management. Inone of these embodiments, the status of a machine may include anidentification of load information (e.g., the number of processes on themachine, central processing unit (CPU) and memory utilization), of portinformation (e.g., the number of available communication ports and theport addresses), or of session status (e.g., the duration and type ofprocesses, and whether a process is active or idle). In another of theseembodiments, this information may be identified by a plurality ofmetrics, and the plurality of metrics can be applied at least in parttowards decisions in load distribution, network traffic management, andnetwork failure recovery as well as any aspects of operations of thepresent solution described herein. Aspects of the operating environmentsand components described above will become apparent in the context ofthe systems and methods disclosed herein.

B. Computer Environment Monitoring and Management System Architecture

The present disclosure relates to systems and methods for monitoring andmanaging the cyber security posture (or status) as well as therobustness of a computer environment (also referred to herein ascyberspace or information system), such as the computing and networkenvironment 10. Computer environments can be vulnerable to a variety ofcyber security breaches or threats such as network outage, unauthorizedaccess to data, intrusive tempering with software or hardware assets,hacking, computer viruses, misconfiguration of software or hardwareassets, service disruption, service misdirection, or the like. Cyberthreats or attacks can jeopardize the availability and credibility ofdata stored in computer environments, can disrupt services provided bythe computer environments, or can cause irreparable damage to theinfrastructure of the computer environments. Since most institutions,such as government institutions, corporations, financial institutions,hospitals, universities, nonprofit organizations and other businesses,rely extensively on their computer systems in handling their day-to-daybusiness, attacks on their computer systems can lead to businessdisruption, legal violations, significant monetary loss and/or customerdissatisfaction.

The volume and sophistication of cyber-attacks on networked computersystems have been growing. According to a recent survey conducted bycyber security firm EY, about 88% of global organizations don't believetheir online defenses are good enough to meet their needs. Also,according to a research report published by Fortune® Magazine inJanuary, 2015, cyber-attacks had cost companies more than 300 billionU.S. dollars over a twelve month period. The volume and severity ofcyber-attacks calls for sophisticated solutions for protecting networkedcomputer systems from cyber threats and cyber-attacks. In particular,cyber security threats can be multi-dimensional, for example, bytargeting stored data, software, services, and/or computer environmentinfrastructure. Also, cyber threats or cyber-attacks can be continuousor repetitive, from various sources, or in various forms. For example,cyber threats can lead to jamming of communication resources, unlawfulaccess of data or storage resources, draining computational resourcesand/or misconfiguration of hardware or software assets. As such,reliable protection of computer environments calls for comprehensivetechniques that continuously monitor and manage a multitude of aspectsor parameters of a computer environment that contribute to the cybersecurity posture of that computer environment.

Furthermore, as computer environments become more complex in terms ofthe number and variety of hardware assets, the number and variety ofsoftware assets, compliance requirements, business requirements and/orlegal requirements, continuous monitoring of a multitude of parametersassociated with large number of hardware and software assets may becomputationally burdensome. Specifically, monitoring a large number ofcomputer assets can involve collecting and analyzing large amounts ofdata. Also, the number and complexity of system requirements, such asbusiness, legal and/or compliance requirements, can increase thecomplexity of data analysis involved in monitoring and managing computerenvironments.

According to one aspect, a computer environment monitoring andmanagement (CEMM) system can be configured to monitor and/or manageassets of a computer environment with regard to availability,vulnerabilities, risks, utilization, stress level, configuration orarchitectural specifications, or a combination thereof. The CEMM systemcan be customized to monitor and/or manage other aspects of the computerenvironment or respective assets. As used herein, an asset of thecomputer environment, can include one or more hardware devices (e.g., acomputer device, a server, a server rack, a portable device, acommunication device or appliance, a chip, etc.), one or more softwaremodules, a hardware platform, a software platform, an operating system,a database, a data file (or data set) stored in the computerenvironment, or a combination thereof. In some implementations, a numberof assets can be nested such that one or more assets are components ofanother asset. For example, a chip or a software application can beassets which are part of a computer server asset. The CEMM system can beconfigured to collect various sets of data related to the computerenvironment using vulnerability scanners, external databases, networkdiscovery (or asset profiling) techniques, user input, or a combinationthereof. By collecting or monitoring various sets of data pertaining tothe computer environment, the CEMM system can provide comprehensive andreal-time assessments of the security posture and the state of health(e.g., in terms of stress level, configuration, resource usage,connectivity or a combination thereof) of assets of the computerenvironment. The CEMM system can provide efficient and relatively fastvisualization of collected and/or assessment data via a variety ofvisual representations. The CEMM system can allow for visualization ofdata in real time (e.g., immediately after it is received by the CEMMsystem).

Referring to FIG. 2, an embodiment of an environment 200 for monitoringand managing cyber security and robustness aspects of a computing andnetwork environment 210 is depicted. The environment 200 can include acomputing and network environment (or a computer network system) 210, acommunications network 201, a computer environment monitoring andmanagement (CEMM) system 220, one or more vulnerability scanners 230,one or more vendor databases 240, one or more cyber security databases250, and one or more authority databases 260. The CEMM system 220 can becommunicatively coupled to the computing and network environment 210,the one or more vulnerability scanners 230, the one or more vendordatabases 240, the one or more cyber security databases 250, and/or theone or more authority databases 260 via the communications network 201.The communications network 201 can include a local-area network (LAN),e.g. Intranet, a metropolitan area network (MAN), a wide area network(WAN), a wireless network, a private network, a public network, theInternet, or a combination thereof.

The computing and network environment 210 can include a plurality ofcomputer servers 211 and a plurality of client devices 212 that arecommunicatively coupled together, for example, via network devices suchas one or more switches 213, one or more wireless modems 214, and/orother network devices. The computing and network environment 210 caninclude a firewall 215 for restricting external access to resources ofthe computing and network environment 210. The computing and networkenvironment 210 can include other electric or electronic devices orappliances such as one or more power generators, one or more airconditioning or cooling devices, one or more sensors, one or moregateways, one or more routers, one or more bridge devices, one or morehub devices, or a combination thereof. The computing and networkenvironment 210 can be a corporate computer network, a communicationsnetwork (such as a wireless communications network), a power grid, anautomated manufacturing system, or the like. The computing and networkenvironment 210 can include a plurality of software platforms orapplications executing on the computer servers 211 and/or the clientdevices 212.

The CEMM system 220 can be configured to monitor and manage the cybersecurity posture and the health states of assets in the computing andnetwork environment 210. An asset, as used herein, can include a device,system, software component, piece of data associated with computing andnetwork environment 210. The CEMM system 220 can include a back-endsystem 222 and a front-end system 224. The back-end system 222 caninclude one or more computer servers 221 for executing back-end softwaremodules to perform operations, such as collecting and analyzing dataassociated with the computing and network environment 210, assessingcyber security and operation (or health) states of one or more assetsbased on the analyzed data, executing management operations based on theassessment results, managing communications with the front-end system224, or a combination thereof. For instance, the back-end system 222 canidentify vulnerabilities associated with the computing and networkenvironment 210 or respective assets, manage vulnerability patching,determine assets under stress, and/or detect asset misconfiguration orabnormal behavior based on data obtained from one or more sources. Anasset under stress is an asset that is overloaded with respect torespective computational, communication, or storage resources, or othersystem resource. For example, a server 211 can be under computationalstress when experiencing excessive CPU usage (e.g., beyond a giventhreshold value), or can be under communication stress when experiencingrelatively high data communication rate(s) (e.g., exceeding a bit ratethreshold value).

The front-end system 224 can include one or more client devices 223 forexecuting front-end software modules to communicate with and displaydata received from the back-end system 222. The front-end system 224 canbe configured to display data received from the back-end system 222(such as collected data, analysis data, assessment data, alerts, or acombination thereof). In some implementations, the client devices 223can be associated with a control room having one or more displaydevices. In some implementations, the front-end system 224 and therespective client devices 223 can be part of the computing and networkenvironment 210. The front-end system 224 can include one or more clientapplications, which when executed on a client device 223, cause theclient device 223 to communicate with the backend-end system 222 (or acomputer server 221 thereof) to acquire and display data.

The back-end system 222 can be communicatively coupled to one or morevulnerability scanners 230. The vulnerability scanner(s) 230 caninclude, for example, a vulnerability scanner by Qualys®, Rapid7,Elastica, Nessus®, Veracode, or any other vulnerability scannerprovider. The vulnerability scanner(s) 230 can include one or moreinformation technology (IT) asset management software tools, such asthat provided by Hewlett Packard, International Business Machines (IBM),Microsoft (MSFT), or any other providers. A vulnerability scanner 230can include a computer scanning program for assessing securityweaknesses of computer devices, computer software, computer systems ornetworks. For instance, the computer scanning program can be configuredto identify software components within the computing and networkenvironment 210 that are vulnerable to malicious attacks. Eachvulnerability scanner 230 can be executed on one or more computerdevices associated with a provider of that vulnerability scanner 230 orone or more computer devices of the computing and network environment210. The back-end system 222 can send a scanning request to thevulnerability scanner 230 and, in response, receive scanning resultsassociated with one or more assets of the computing and networkenvironment 210. The scanning request can be a full scanning request(e.g., for scanning all assets of the computing and network environment210) or a partial scanning request (e.g., for scanning a subset of theassets of the computing and network environment 210).

The back-end system 222 can obtain data relevant to the security postureof the computing and network environment 210 from the vendor database(s)240, cyber security database(s) 250, authority database(s) 260, and/orother sources. The vendor database(s) 240 can include databases,websites, blogs, or social media pages associated with software and/orhardware vendors. The vendor database(s) 240 can include published dataregarding problems or weaknesses (such as vulnerabilities) associatedwith hardware or software components and/or corresponding fixes (e.g.,vulnerability patches), updates or new versions of software components,or a combination thereof. The vendor database(s) 240 can include adatabase sponsored or provided, for example, by MSFT, IBM, Oracle,Google, or other hardware or software vendors. Cyber securitydatabase(s) 250 can include databases, websites, blogs and/or socialmedia pages related to cyber security such as the Common Vulnerabilitiesand Exposures (CVE) database or other databases by Qualys®, MSFT, IBM,or Google. The authority database(s) 260 can include databases and/orwebsites related to cyber security and associated with governmentinstitutions or organizations such as the Federal Bureau ofInvestigation (FBI), the Department of Homeland Security (DHS), EuropeanNetwork and Information Security Agency (ENISA), North Atlantic TreatyOrganization (NATO), or the like. The databases 250 and 260 can includepublished information regarding, for example, viruses, vulnerabilities,hacking trends or techniques, known hackers or malicious sources,available cyber security protection solutions, or a combination thereof.

FIG. 3 shows an embodiment of an architecture of the CEMM system 220.The CEMM system 220 can include a software bus (also referred to as avirtual bus) 302, a data collection engine 304, a database 306, adatabase engine 308, a controller (or orchestrator) engine 310, an assetprofiling engine 312, a scheduling engine (also referred to asscheduler) 314, a ranking engine 316, a polarizing filter engine 318,and a visualization engine 320. The data collection engine 304, thedatabase 306, the database engine 308, the controller engine 310, theasset profiling engine 312, the scheduling engine 314, and the rankingengine 316 are modules of the back-end system 222, whereas thepolarizing filter engine 320 and the visualization engine 322 aremodules of the front-end system 224.

Referring to FIGS. 2 and 3, the data collection engine 304 can beconfigured to manage collection of data from various data sources suchas the vulnerability scanner(s) 230, the vendor database(s) 240, thecyber security database(s) 250, the authority database(s) 260, or acombination thereof. The data collection engine can use, for example,one or more application program interfaces (APIs) or securecommunication channels to obtain data from the data sources. Forinstance, the data collection engine 304 can use APIs to request thevulnerability scanner(s) 230 to scan the computing and networkenvironment 210 or assets thereof. The data collection engine 304 canreceive vulnerability scanning results over secure communicationchannels between the CEMM system 220 and the vulnerability scanner(s)230. The data collection engine 304 can also access external databases,such as databases 240, 250 and/or 260, to obtain cyber securityinformation relevant to one or more assets of the computing and networkenvironment 210, for example, over secure communication channels. Thedata collection engine 304 can employ search functions or search queriesto fetch relevant cyber security data in the databases 240, 250 and/or260. The data collection engine 304 can employ various types of searchqueries based on the information of interest sought. For example, thedata collection engine 304 can be configured to generate (or use)separate search queries to look for cyber security threat outbreaks,determine potential cyber security risk exposures (e.g., malware) of theCEMM system 220, for example, based on implemented software and/orhardware, and/or search for configuration issues (e.g., secure socketslayer (SSL) issues) based on software or hardware configurationsassociated with the CEMM system 220. The data collection engine 304 caninitiate data collection processes (e.g., vulnerability scans or sendingsearch queries to external databases) periodically or in response to arequest from another module of the CEMM system 220.

The data collection engine 304 can be configured to identify and mapsimilar data parameters or similar data sets received from distinct datasources. For instance, various data sources can associate distinctidentifiers and descriptions to a single vulnerability or malware. Also,separate data sources can employ different severity levels to rate theseverity of a given cyber security threat. The data collection engine304 can map data items (or data files) indicative of a common cybersecurity subject matter or issue that are received from separate datasources to one another based on respective identifiers. In someimplementations, the data collection engine 304 can be configured tomerge such data items into a single data item or description for storingby the CEMM system 220. By mapping and merging of cyber security dataitems associated with a common cyber security subject matter or issue,the data collection engine 304 can eliminate or reduce data redundancyresulting in efficient data storage and improved access speed of storeddata.

FIGS. 4A and 4B show a diagram and a table 450, respectively,illustrating an embodiment of mapping similar data items from variousdata sources to one another. The data collection engine 304 can receivescanning data from a plurality of vulnerability scanners 410, such asvulnerability scanners by Qualys®, Rapid7, BeyondTrust, and IBM. Thedata collection engine 304 can fetch vendor databases 420 (e.g.,databases associated with Microsoft (MSFT), Oracle, Adobe, and Google),authority databases 430 (e.g., databases associated with the FBI, DHS,NATO, or ENISA), and cyber security databases 440 (e.g., the CVEdatabase or databases associated with Qualys®, MSFT, and Google).

The data collection engine 304 can store and maintain table 450 (orother data structure) for matching, or mapping to one another,identifiers assigned by various data sources to a given cyber securitysubject matter or issue. A cyber security subject matter or issue asused herein can include a software or hardware configuration issue, avulnerability, a vulnerability patch, a malware, a cyber securityweakness associated with a software or hardware component, or the like.The data collection engine 304 can assign its own identifiers topublished cyber security matters and store the assigned identifiers, forexample, in a column of the table 450. The data collection engine 304can allocate for each data source (e.g., the vulnerability scanners 230and/or the databases 240, 250 or 260) a respective column of the table450 to store identifiers assigned by that data source to various cybersecurity subject matters. For example, the left most column of table 450can include identifiers assigned by the data collection engine 304, thesecond left most column can include identifiers assigned by Qualys®, andthe right most column can include identifiers associated with DHS. Adata source may not have assigned identifiers to one or more cybersecurity subject matters. For each cyber security subject matter, thedata collection engine 304 can allocate a respective row of the table450 to store identifiers assigned by various data sources to that cybersecurity subject matter. In some implementations, the data collectionengine 304 can use one or more other data structures (e.g., other thanthe table 450) to store information (e.g., descriptions, publicationdates, severity levels, published solutions, or the like) related to thecyber security subject matters. The information associated with eachcyber security subject matter can be mapped to the respective identifierassociated with the CEMM system 220 (or assigned by the data collectionengine 304).

The data collection engine 304 can receive, from various data sources,data (e.g., vulnerability scanning results and/or search results oralerts from databases 240, 250 or 260) indicative of cyber securitysubject matters or issues related to the computing and networkenvironment 210. The data received from a given data source can include,for each cyber security subject matter indicated in the data, arespective identifier assigned by that data source. Upon receiving cybersecurity data from a given data source, the data collection engine 304can scan that data to extract or determine one or more identifiers ofcyber security subject matters indicated therein. The data collectionengine 304 can compare each extracted identifier to identifiersassociated with the CEMM system 220 in table 450 (e.g., identifiers inthe left most column of table 450). If a match is found, the datacollection engine 304 can employ the corresponding matching identifierassociated with the CEMM system 220 instead of the extracted identifierto identify the respective cyber security subject matter. If no match isfound, the data collection engine 304 can assign a new identifier to therespective cyber security subject matter, and store the new identifierin table 450 (e.g., at the left most column and a new row). The datacollection engine 304 can also store other information related to therespective cyber security subject matter (e.g., description, potentialaffected software or hardware modules, links, publication data,publication source(s), published solution(s), severity level, etc.)associated with the new assigned identifier in one or more other datastructures (e.g., other than table 250). The data collection engine 304can map such information to the new assigned identifier.

The data collection engine 304 can merge multiple descriptions(associated with various data sources) of each cyber security subjectmatter into a single description, and store that single descriptioninstead of storing the multiple ones provided by the various datasources. Accordingly, the data collection engine 304 can reduce theamount of data stored and maintained by the CEMM system 220.Furthermore, by reducing the amount of data stored, the speed ofaccessing and processing such data by the data collection engine 304 orother modules of the CEMM system 220 can be enhanced. However, the datacollection engine 304 can maintain some of the information associatedwith a given cyber security subject matter in redundant form. Forexample, the data collection engine 304 can maintain various severitylevels (e.g., associated with various data sources) for a givenvulnerability or cyber security threat.

Referring to FIGS. 2 and 3, the data collection engine 304 (or the CEMMsystem 220) can be configured to receive, as input, design specificationdata associated with the computing and network environment 210. Thedesign specification data can include data associated with designblueprints or design documents, contractual agreements, engineeringstandards, compliance regulations or guidelines, and/or other design orspecification information associated with the computing and networkenvironment 210 or respective assets. Such data can include, forexample, information indicative of network layouts, asset architecturalor configuration variables, asset functional or operationalrequirements, asset ownership information, security requirements, legalrequirements, compliance requirements, business requirements, or acombination thereof. The design specification data can be viewed as datarepresenting how the computing and network environment 210 is intendedto be built and to operate. The data collection engine 304 can receivethe design specification data as user input via one or more inputinterfaces of one or more computing devices of the CEMM system 220 orfrom a computing device or database associated with the computing andnetwork environment 210.

In some implementations, the data collection engine 304 (or anothermodule of the CEMM system 220) can arrange the received design andarchitecture data into a plurality of specification profiles. The datacollection engine 304 can generate, or receive, a plurality ofspecification profiles for each of a plurality of assets of thecomputing and network environment 210 based on received designspecification data. The specification profiles associated with an assetof the computing and network environment 210 can include a respectiveplurality of configuration or design variables that specify, forexample, an asset type or classification, interconnections, assetowner(s), location information, functional or operational information,redundancy requirements, compliance requirements, legal requirements,business requirements and/or other aspects of that asset. Thespecification profiles can be viewed as representing the “DNA” of thecomputing and network environment 210 and/or respective assets. Inparticular, the CEMM system 220 can use values of the variables in thespecification profiles as reference values to assess how well thecomputing and network environment 210 is operative in accordance withits intended design. The CEMM system 220 can identify one or morevariables of the computing and network environment 210 to be monitoredbased on the received design and architecture data.

Referring to FIG. 5, examples of specification profiles for an asset ofthe computing and network environment 210 are illustrated. Theillustrated specification profiles include an infrastructure profile510, an application support profile 520 and a security profile 530. Thespecification profiles shown in FIG. 5 are not to be interpreted aslimiting or exhaustive. In particular, the CEMM system 220 can defineany number of specification profiles in association with the computingand network environment 210 or in association with any respective asset.Furthermore, the variables defined in each specification profile canvary based on the implementation of the CEMM system 220, the computingand network environment 210 monitored, the asset associated with thatspecification profile, or a combination thereof.

The infrastructure profile 510 can include one or more sections such as“infrastructure identification,” “network infrastructure” and “platforminfrastructure.” The “infrastructure identification” section can includevariables identifying the respective asset such as a name or identifier(ID), a category, a vendor, and a version of the respective asset. Thecategory of the asset can be indicative, for example, of whether theasset is a software asset, a server, a workstation, a network appliance,a datacenter, or a security asset (e.g., a firewall). In someimplementations, the “infrastructure identification” section can includevariables indicative of memory capacity, central processing unit (CPU)information, a date the asset was launched or installed within thecomputing and network environment 210, one or more links associated withthe asset or the respective vendor, or a combination thereof. The“network infrastructure” section can include, for example, variablessuch as a domain name system (DNS), an Internet protocol (IP) address, anetwork (or security) zone, a speed and/or bandwidth, a redundancyvariable, and one or more quality of service (QoS) requirementsassociated with the respective asset. The QoS requirements can beindicative of acceptable values with respect to, for example, errorrate, bit rate, throughput, transmission delay, availability, packetdelay variation, or a combination thereof. The speed or bandwidth can beindicative of one or more maximum data rates supported by the respectiveasset. The “network infrastructure” section can include other variablessuch as a number of input or output ports, data packet processingcapabilities, supported transport protocols or a combination thereof.The “platform infrastructure” section can include variables indicativeof platform information associated with the respective asset, such as aplatform category (e.g., in-house, cloud or hybrid), supported operatingsystem or database, performance parameter(s), redundancy parameter(s)and high availability parameter(s). In some implementations, thesections and or variables associated with the infrastructure profile 510can vary from one asset to another, for example, based on the assetcategory.

The application support profile 520 can include variables or informationindicative of software applications (or software modules) or databasesassociated with a respective asset. For instance, the applicationsupport profile 520 can include a list of software applicationssupported by or installed in a the respective asset. The list ofsoftware applications can include information such as the name, version,and/or release date of each software application. The applicationsupport profile 520 can also include a list of databases maintained oraccessible by the respective asset. The list of databases can includeindications of the database management system (DBMS), storage, and/orreplica(s) associated with each database in the list. The applicationsupport profile 520 can include a list of vendors of the softwareapplications or databases associated with the asset including the nameand/or one or more links associated with each vendor.

The security profile 530 can include information and variables relatedto the cyber security of the respective asset. For instance, thesecurity profile 530 can include variables indicative of a security zoneof the asset, network security variables, platform security variables,application security variables and data security variables. The networksecurity variables can include, for example, parameters or informationindicative of a DNS, a load balancer (LB), a firewall (FW), defensivetechniques against denial-of-service (DoS) or distributeddenial-of-service (DDoS) attacks, and/or an intrusion detection system(IDS) associated with the asset. The network security variables can alsoinclude indications of web gateways coupled to the asset and/or securitytunnels supported by the asset. For a given software application, therespective application security variables can include parameters orinformation indicative of a respective type and/or category and/orrespective components. The security variables can include parametersrelated to penetration testing requirements and/or sustainabilitysolutions for one or more software applications supported by therespective asset. The data security variables can include parametersindicative of data sensitivity level(s), encryption techniques and/orauthentication or access control measures associated with the respectiveasset. The platform security variables can include, for exampleconfiguration parameters, patching requirements, indication of antivirussoftware, indication of least-privileged access level(s), priority ofcontainment in case of attack and/or priority of shutdown in case of anattack outbreak associated with the respective asset.

The specifications platforms 510, 520 and 530 are neither limiting norexhaustive. For instance, the CEMM system 220 can generate or employ,for a given asset of the computing and network environment 210, otherspecification profiles such as “Function,” “Redundancy,” “Compliance,”“Risk,” “Service Level Agreement (SLA),” “Legal,” “Geolocation,” “Power”or a combination thereof. The “Function” profile can be indicative of abusiness function associated with the asset and can include variablesrepresentative of research, development, production, staging, and/ormarketing.” The “Redundancy” profile can include variables indicative ofa redundancy or one or more redundancy requirements of the asset withinthe computing and network environment 210. For instance, the“Redundancy” profile can include variables indicative of assetavailability categories, such as high availability, disaster recovery,or business continuity. Each availability category can be associatedwith a respective redundancy level. The “Compliance” profile can includevariables indicative of compliance requirements associated with theasset. The compliance requirements can be defined based on complianceregulations or guidelines. The “Risk” profile can include variablesindicative of, for example, risks associated with non-protected data,loss of data, unauthorized access and/or down time for a respectiveasset. The “SLA” profile can include variables indicative ofrequirements such as remote accessibility, accessibility from mobiledevices, continuous availability (e.g., 24 hours a day, 7 days a week)of service associated with the asset (e.g., email or web service). The“Legal” profile can include variables indicative of local regulations,legal requirements, or contractual agreement, such as the incorporationof a given disclaimer in emails sent externally, system redundancy, orcontinuous and full data backup. The “Geolocation” profile of an assetcan include variables indicative of the asset name, the geolocation ofthe asset, the physical location of a data center associated with thatasset, the physical location of a server rack associated with thatasset, the position of the asset within a respective server rack, or acombination thereof. The “Power” profile can include variables orinformation related to, for example, which power grid does therespective asset sit on, which power center does it feed from, whichpower supply in the data center (or business location) is it connectedto, whether there is a diesel power generator that feeds into its grid,whether such power generator is redundant, what power unit is installedon the rack the asset sits in, whether such power unit is redundant,and/or a combination thereof. The “Power” profile can include variablesindicative of operational voltage requirement(s), operational currentrequirement(s), electric fault tolerance or a combination thereof.

Referring back to FIG. 3, the data collection engine 304 can store thespecification profiles for a given asset in the database 306 as datavectors, data matrices, or other data structures. The data collectionengine 304 (or other module of the CEMM system 220) can also use thespecification profiles to determine a number of variables associatedwith the asset to be monitored. Specifically, the specification profilesfor the asset can be viewed as representing the per-design orarchitectural “DNA” or design/architectural benchmarks for that asset.The CEMM system 220 can monitor a plurality of design parameters for agiven asset and compare the monitored parameters to correspondingvariables in the specification profiles associated with asset todetermine whether the asset is operative in accordance with the intendeddesign or architecture described in the specification profiles. Inparticular, the CEMM system 220 can monitor deviations of assetparameters from the corresponding variables in the specificationprofiles. Also, since the specification profiles for a given asset canbe comprehensive (e.g., include a multitude of design aspects of thatasset), monitoring design or architectural parameters corresponding tothe variables in the specification profiles provides valuablemulti-dimensional data, including information indicative of assetdependencies on other assets, in detecting, protecting against orreacting to cyber security threats or attacks. Such monitoring canprovide multi-dimensional views of assets in the computing and networkenvironment 210 over time.

The database 306 can be configured to store data collected by the datacollection engine 304 or other modules (e.g., the asset profiling engine312) of the CEMM system 220. For instance, the database 306 can storethe specification profiles of assets in the computing and networkenvironment 210, data received from vulnerability scanners 230, vendordatabases 240, cyber security databases 250 or authority databases 260,asset profiling data obtained by the asset profiling engine 312, or acombination thereof. The database engine 308 can be configured to handleaccess to the database 306. For instance, the database engine 308 canhandle read or write requests from other engines or modules of the CEMMsystem 220. The back-end system 22 can analyze data collected fromvarious data sources to determine which, or how, historical data isstored in the database 306. For example, for some asset parameters(e.g., CPU usage, throughput, or bit rate) the back-end system cancompute average values (or other statistical parameters) over a timeperiod and store the computed statistical parameters in the database 306instead of storing the collected values. The database engine 308 caninclude a compression module (not shown in FIG. 3) for compressing databefore storing in the database 306. Given that the amount of datacollected by the CEMM system 220 over time can be increasingly large,storing data in compressed form allows for efficient use of memoryassociated with the database 306. In some implementations, the databaseengine 308 can also include a decompression module (not shown in FIG. 3)for decompressing (if desired) data retrieved from the database 306.

The controller engine 310 can be viewed as the “brain” of the CEMMsystem 220. The controller engine 310 can orchestrate data collection bythe data collection engine 304 or the asset profiling engine 312,process collected data, handle interactions with the front-end system224, and/or determine processes to be executed by one or more otherengines, for example, responsive to analysis of received data. Forinstance, the controller engine 310 can be configured to set thefrequency for scanning the computing and network environment 210 forvulnerabilities, instruct the data collection engine 304 or the assetprofiling engine 312 to collect data associated with one or more assets,and/or specify data associated with one or more assets to be collected.Also, the controller engine 310 can receive requests for data from thefront-end system 224, and in response prepare and provide the requesteddata to the front-end system 224 for display. Processes and decisionsassociated with the controller engine 310 are described in furtherdetail throughout this disclosure.

The asset profiling engine 312 can query (or interrogate) assets of thecomputing and network environment 210 for data related to those assets.As such, the asset profiling engine 312 can be viewed as a tool forobtaining real-time profiling data of an asset of interest directly fromthat asset or other assets (e.g., other assets that can communicatewith, or having information about, the asset of interest). The assetprofiling engine 312 can receive the asset profiling data via acommunication channel established with the asset of interest or otherassets. The profiling data can include any data that can be requestedfrom the asset of interest or other assets, such as asset identificationinfo, asset IP address, asset media access control (MAC) address, assetnetwork basic input/output system (NetBIOS), asset operating system(OS), configuration data, asset resources' usage information (e.g., CPUusage, memory usage, battery usage, logs, communication load over one ormore ports, etc.), installed applications, asset interconnection orcommunication information (e.g., devices communicating with connected tothe asset, asset user(s), or a combination thereof.

The asset profiling engine 312 can profile a given asset of thecomputing and network environment 210 according to a pre-definedprofiling frequency or responsive to instructions from the controllerengine 310 or other module of the CEMM system 220. The asset profilingengine 312 can support a plurality of profiling types (or profilingmodes) defined, for example, based on the profiling data to berequested, a profiling depth, the purpose of the profiling, the asset orcomponent thereof to be profiled, the profile triggering event (e.g.,routine profiling or event triggered profiling), or a combinationthereof. For example, when profiling a security camera, the assetprofiling engine 312 may be mainly interested in whether the camera ison and recording. However, in profiling a firewall or an asset thereof,the asset profiling engine may want to know the IP addresses of devicesthat attempted to access resources of the computing and networkenvironment 210 in a given period of time, the IP addresses blocked, theIP addresses that successfully accessed the resources, or a combinationthereof. Also, the asset profiling engine 312 may profile an asset, forexample, for respective CPU usage, memory usage, or communication loadaccording to a hierarchical profiling model with increasing depth (orlevel of detail) of the profiling data. Each depth can be associatedwith a respective profiling mode or sub-mode.

In some implementations, each profiling mode can be associated with oneor more respective profiling templates defining the profiling data to berequested. For instance, each profiling template can include a query forone or more respective asset parameters. In profiling a given asset, theasset profiling engine 312 can select a profiling template from aplurality of templates for sending to the asset to be profiled or otherrelated asset. Employing a plurality of profiling modes, or profilingtemplates, allows the asset profiling engine 312 to collect profilingdata efficiently and relatively fast by requesting only the desiredinformation at the time of profiling. The asset profiling engine 312 canavoid overloading assets of the computing and network environment 210with unnecessary computational and communication burden to fetch,retrieve and transmit relatively large chunks of data. In general, theuse of a plurality of asset profiling modes (or asset profilingtemplates) results in a smart profiling approach characterized byprofiling flexibility, speed and efficiency.

One asset profiling mode is referred to herein as “light assetprofiling” or “light profiling.” The asset profiling engine 312 can beconfigured to perform light profiling to each of a plurality of, or all,assets of the computing and network environment 210. In light profilingmode, the asset profiling engine 312 can query a given asset for arelatively limited and/or high level set of parameters mainly to confirmthat the asset exists and is genuine. For example, the asset profilingengine 312 can query the asset for its IP address, MAC address, firmwareinformation, serial number, hardware information, device uniqueidentifier(s), or a combination thereof when performing light profiling.The parameters requested in light profiling mode can vary, for example,based on the profiled asset. Upon receiving a response from the asset,the asset profiling engine 312 can determine that the asset exists.Also, the asset profiling engine 312 can compare parameter valuesreceived from the asset to corresponding asset variables maintained bythe CEMM system 220 (e.g., specification profile variables or parametersreceived from other assets or external data sources such as thevulnerability scanner(s) 230 or any of the databases 240, 250 and 26).Accordingly, the asset profiling engine 312 can confirm the existence ofand authenticate any asset with communications capabilities described inthe specification profiles or reported by any other entity. The assetprofiling engine 312 can perform light profiling for one or more assetsof the computing and network environment 210 periodically according toone or more respective light profiling frequencies, or responsive to agiven event (e.g., receipt of vulnerability data, discrepancy incollected data, detection of an abnormal behavior). Light profiling canbe performed relatively fast (e.g., compared to some other profilingmodes) given the nature and relatively small number of parametersassociated with each light profiling event.

FIG. 6 shows a flowchart illustrating an asset profiling method 600. Themethod 600 can include determining an asset profiling event to profile agiven asset for data (step 610), checking for availability of requesteddata (decision block 620), and querying the asset if the requested datais not available (step 630) or otherwise providing an indication of thedata available (step 640). Upon receiving a response from the queriedasset (decision block 650), the asset profiling engine 312 (or otherentity) can store or provide the profiling data received to anotherentity (step 670). Otherwise, the asset profiling engine 312 can queryanother asset (step 660) and store or provide received profiling data toanother entity (step 670).

The method 600 can include the asset profiling engine 312 (or thescheduling engine 314) determining or detecting an asset profiling eventto profile a target asset for data (step 610). The asset profilingengine 312 can receive a request from the controller engine 310 oranother entity of the CEMM system 220 to profile a given asset. Forinstance, upon detecting a discrepancy in the specification profilesand/or data received from the vulnerability scanner(s) 230, thecontroller engine 310 can instruct the asset profiling engine 312 toprofile one or more assets to resolve such discrepancy. The request caninclude an indication of profiling or mode to be used or profiling datato be requested from the asset. In the case of periodic profiling, theasset profiling engine 312 can initiate profiling the asset based ontiming information.

The asset profiling engine 312 or the controller engine 310 can checkwhether the requested profiling data is already available to CEMM system220 (decision block 620). The CEMM system 220 can use available data(e.g., stored in a memory or cache) recently received (e.g., in the last10 mins or 30 mins) from one or more other assets to deduce therequested profiling information without necessarily having to query theasset of interest directly. The indirect deduction of such informationcan help reduce profiling communication with assets of the computing andnetwork environment 210, and can allow obtaining the requestedinformation (or even a reduced version of it) when the asset of interestis under stress (e.g., computational or communication overload) or lostconnection with the CEMM system 220. The asset profiling engine 312 orthe controller engine 310 can check if any other assets communicatedwith the target asset, for example, in a recent period of time (e.g., inthe last hour or last 30 minutes), and what time did suchcommunication(s) occur. As an example, a server 211 can report to theCEMM system 220 respective access to a database server of the computingand network environment 210 to retrieve data. Such information can besufficient for the asset profiling engine 312 or the controller engine310 to deduce that the database server is live and answering requests.As such, the asset profiling engine 312 can skip asking the target assetif it is live. In some implementations, the asset profiling engine 312can store information indicative, for example, of the reliability of thededuced information. For example, information deduced based on datareported by multiple assets can be more reliable than informationdeduced based on data reported by a single asset. Also, informationdeduced based a sequence of inferences (e.g., each based on datareported by a respective asset) can be less reliable than informationdeduced based on a single inference.

If the requested data is already available to the CEMM system 220(decision block 620), the asset profiling engine 312 can send anindication of such data to the controller engine 310 (step 640). In someimplementations, step 640 can be optional. However, if the data is notavailable to the CEMM system 220 (decision block 620), the assetprofiling engine 312 can start querying the target asset (step 630). Theasset profiling engine 312 can select a profiling mode (e.g., select aprofiling template) based on, for example, the profiling eventdetermined at step 610, the target asset, the profiling data requested,or a combination thereof. The asset profiling engine 312 can send aquery to the target asset based on, for example, the selected profilingmode or selected profiling template.

If a response is received from the target asset (decision block 650),the asset profiling engine 312 can store the data received in theresponse in a memory (or memory cache), or provide the received data tothe controller engine 310 or some other entity of the CEMM system 220(step 670). For instance, if the controller engine 310 instructed theasset profiling engine 310 to profile the target asset at step 610, theasset profiling engine 312 can respond at step 670 by providing the datareceived from the target asset (or a version thereof) to the controllerengine 310. However, if no response is received from the target asset(decision block 650), the asset profiling engine 312 can perform proxyprofiling (step 660).

In proxy profiling, the asset profiling engine 312 can ask other assetsof the computing and network environment 210 to profile the targetasset. For instance, in the case where the target asset is no longerreachable by the CEMM system 220, the asset profiling engine 312 cansend a request to one or more other assets of the computing and networkenvironment 210 to profile the target asset on its behalf. In someimplementations, the asset profiling engine 312 can send such a requestto one or more designated computer devices of the computing and networkenvironment 210 (e.g., a workstation or server associated with aninformation technology (IT) operator). The request can include anindication of parameters to be requested from the target asset. The oneor more other assets can send one or more queries to the target assetbased on the request received from the asset profiling engine 312.

Upon receiving a response from the target asset, the one or more otherassets can forward the received response (or information therein) to theasset profiling engine 312. In some implementations, the profiling dataobtained by the one or more other assets can represent only a subset ofthe profiling data originally requested by the asset profiling engine312. In some instances, the one or more other assets may not have theprivilege (or are unsuccessful) to perform the profiling of the targetasset. In such instances, the one or more other assets can respond tothe asset profiling engine 312 to indicate their failure and/or thereason of profiling failure. The one or more other assets can includeany information the already have about the target asset in theirresponse(s).

In the case of periodic profiling, the respective profiling frequencycan depend based on the profiled asset. For example, the profilingfrequency can be relatively high for a high value (or high ranked) assetwhereas the profiling frequency for a low value (or low ranked) assetcan be relatively low. The profiling frequency can be specific to eachasset and can be continuously adjusted, for example, based on the stateof the respective asset. For example, if an asset is experiencing stressor abnormal behavior, the controller engine 310 can increase theprofiling frequency of the asset to allow collecting profiling dataevery one or more milliseconds. The controller engine 310 can alsodecrease the profiling frequency of an asset where information aboutthat asset can be obtained or deduced from already available data.

When profiling a given asset, the asset profiling engine 312 can querythat asset for a variety of information that can include, but limitedto, resource usage details (CPU, memory, disk, etc.), installedsoftware, registry key entries (e.g., settings of the OS or softwareapplications), other assets the given asset is communicating with,connections open, communication logs, the like, or a combinationthereof. The profiling depth (e.g., the level of detail of profileddata) may vary from one profiling event to another. For instance, in alight profiling event, the asset profiling engine 312 can ping the assetto request high level information indicative of the identity and theconnectivity (e.g., whether the asset is connected and responding) ofthe asset. However, when attempting to investigate an abnormal behavior(e.g., stress, generating unusual traffic, attempts to access blockedwebsites, violation of one or more requirements, etc.) or whether theasset is affected by a vulnerability or cyber security threat, the assetprofiling engine 312 can query the asset for more detailed informationsuch as CPU usage per process, network resources' usage per application,communication logs, or the like. The acquisition of such information caninvolve transmission of large chunks of data by the profiled asset tothe asset profiling engine 312. The communication of large amounts ofdata as part of asset profiling processes can put a high computationaland communication burden on assets of the computing and networkenvironment system 210 as well as on the CEMM system 220, especially ifasset profiling is performed regularly or frequently.

The asset profiling engine 312 can be configured to perform hierarchicalprofiling to efficiently acquire detailed asset profiling information ina way not to overload the profiled asset(s). A hierarchical profilingscheme can include multiple sequential profiling steps, each associatedwith a respective profiling query. As the asset profiling engine 312moves from one profiling step to the next, more detailed and morespecific data is requested from the profiled asset (e.g., profilingdepth increases). Information to be queried at a given step can bedetermined based on previously acquired data. In such case, onlyrelevant data is requested at each step of the hierarchical profilingprocess. For example, if the asset profiling engine 312 determines atone profiling step that the cumulative CPU usage for a given asset isunusually high, it may decide to query for the CPU usage per processorcore. The hierarchical profiling scheme is discussed in more detail withregard to FIGS. 9 and 10 below.

Referring back to FIG. 3, the back-end system 222 can include ascheduling engine 314 configured to manage communications with externaldevices and establish communication channels with such external devices.For instance, the scheduling engine 314 can be configured to establishcommunication channels (or communication links) with computer devices ofthe computing and network environment 210 (e.g., for asset profilingpurposes), computer devices associated with the vulnerability scanner(s)230 (e.g., to request and acquire vulnerability scanning data), or thedatabases 240, 250 or 260. The scheduling engine 314 can employ one ormore exchange protocols such as Hypertext Transfer Protocol (HTTP),Simple Mail Transfer Protocol (SMTP), Secure Shell (SSH) protocol,Simple Network Management Protocol (SNMP), Windows ManagementInstrumentation (WMI), File Transfer Protocol (FTP), the like, or acombination thereof. Such protocols can be implemented as pluginsallowing the possibility to add other protocols.

FIG. 7 shows a signaling diagram illustrating a method 700 ofestablishing a communication link (or channel) with a data source andacquiring data via that communication link. The method 700 can includereceiving or detecting an indication of a trigger event (step 710),sending a request to data source to establish a connection therewith(step 720), and receiving an acknowledgement of the connection from thedata source (step 730). The method 700 can include sending a request, tothe data source, for data (step 740), receiving the data from the datasource over the established connection (step 750), and providing thereceived data to the data collection engine 304 or the asset profilingengine 312 (step 760). The method 700 can include the data collectionengine 304 or the asset profiling engine 312 processing the data (step770), and storing the data in a memory cache (step 780) and or indatabase 306 (step 790).

The method 700 can include the scheduling engine 314 receiving ordetecting an indication of a trigger event (step 710). For instance, forperiodic or scheduled data collection events (e.g., scheduled orperiodic events to profile assets or acquire data from external sourcessuch as the vulnerability scanner(s) 230 or the databases 240, 250 or260) the scheduling engine 314 can employ, for example, the Unix Cronprocess to time schedule initiation of execution of data acquisition.The Cron process can provide an indication to the scheduling engine 314when the time for a data acquisition event arrives. In some instances,the scheduling engine 314 can receive an instruction from, for example,from the data collection engine 304, the controller engine 310 or theasset profiling engine 312 to initiate a data acquisition session/eventwith a given data source, such as a vulnerability scanner 230, anexternal database (e.g., database 240, 250 or 260) or an asset of thecomputing and network environment 210.

The method 700 can include the scheduling engine 314 sending a requestto the data source to establish a communication link/channel therewith(step 720) and receiving an acknowledgement of the connection from thedata source (step 730). The communication link can be a securecommunication link. The scheduling engine 314 can send the request andreceive the acknowledgement according to a data transfer protocol. Theacknowledgement can be indicative of the successful establishment of thedata link.

Upon receiving the acknowledgement, the scheduling engine 314 can send arequest for the data to the data source (step 740), and receive the dataover the data link (step 750). The scheduling engine 314 can receive adata query from the asset profiling engine 312 or the data collectionengine 304, and forward the query to the data source over thecommunication link. The asset profiling engine 312 (or the datacollection engine 304) can determine or select the data query based on,for example, the data source, the event triggering the data acquisition,or a combination thereof.

The scheduling engine 314 can forward the received data to the assetprofiling engine 312 or the data collection engine 304, for example,depending on the nature of the data acquisition event (step 760). Forexample, if the data sources is an asset of the computing and networkenvironment 210 (e.g., asset profiling event), the scheduling engine 314can provide the data to the asset profiling engine 312, otherwiseprovide the data to the data collection engine 304. The data collectionengine 304 or the asset profiling engine 312 can process the receiveddata (step 770). Such processing can include filtering, eliminatingredundancy, deriving or computing statistics' parameters, compressingdata, eliminating non-reliable data, or a combination thereof. The dataprocessing step 770 can be optional. The data collection engine 304 orthe asset profiling engine 312 can provide the data for storage at amemory cache (step 780) or database 306. In some instances, the memorycache can be associated with the software bus 302. In someimplementations, statistics (e.g., mean, variance, standard deviation,etc.) computed based on the received data can be stored at the database306 or the memory cache. Storing few statistics instead of all the datain the database 306 can reduce the amount of storage memory used.Storing the data in the memory cache allows for fast access of the databy other entities of the CEMM system 220 and reduces

Referring back to FIG. 3, the back-end system 222 can include a rankingengine 316 configured to compute ranking values for assets of thecomputing and network environment 210. The ranking value assigned to agiven asset can be indicative of the importance of that asset to themission and operation of the computing and network environment 210and/or how critical the state(s) of that asset. The ranking engine 316can deduce or quantify the importance of the asset based on, forexample, one or more specification variables in specification profilesassociated with the asset. For a given asset, the ranking engine 316 canuse information such as the position of the asset's business owner(e.g., chief executive officer, engineer, secretary, etc.), the asset'shigh availability (HA) requirements, the asset's business requirements,the asset's SLA requirements, the type of data stored in the asset,other assets' dependency on the given asset, the like, or a combinationthereof as indicators of the importance of that given asset. The rankingengine 316 can also use collected data (e.g., asset profiling data,vulnerability scanning data, and/or data from other sources such asdatabases 240, 250 or 260) to quantify or estimate how critical thestate(s) of operation of the asset is/are. For example, the rankingengine 316 can employ asset resources (CPU, memory, hard disk storage,communication bandwidth, etc.) usage, vulnerability data, communicationlogs, as indicators of how normal or abnormal (e.g., with respect tointended design indicated in specification profiles) the state(s) of theasset is/are. The ranking engine 316 can employ, for example, aweighting sum (or other function) of a plurality of parameter valuesassociated with one or more specification variables and profilingparameters to compute a ranking value of the asset. For variables thatare not numbers, the CEMM system 220 can assign numbers to suchvariables for use in computing a ranking value.

In some implementations, the ranking engine 316 can compute a pluralityof ranking values for a given asset. Each ranking value can beassociated with a respective aspect (e.g., stress level, conformity withcompliance requirements, conformity with security requirements,connectivity, conformity with design/intended redundancy, compliancewith SLA requirements, compliance with business requirements,vulnerability, etc.) of the asset. The ranking engine 316 cancontinually update the ranking value(s) of each asset. For example, eachtime new data (e.g., profiling data, vulnerability scanning data,alerts, change made to specification profiles, or other data) relevantto an asset is received by the CEMM system 220, the ranking engine 316can update the ranking value(s) associated with that asset.Specifically, the ranking engine 316 can, for a given asset, continuallyor regularly (e.g., responsive to receipt of new data/informationrelevant to that asset) compute/update ranking value(s) for that asset.Each ranking value can be computed based on a combination of parametersassociated with that asset. Ranking value assigned to a given asset canbe indicative of a priority, with respect to other assets, foraddressing or fixing an issue (e.g., vulnerability, violation of a givenrequirement, misconfiguration, cyber security attack, cyber securitythreat, etc.) affecting that asset directly or indirectly. As such,ranking values for various assets can be viewed a priority ranked to-dolist for operators of the computing and network environment 210, or forthe CEMM system 220 if the issues are to be addressed automatically.

As an example, if the data collection engine 304 receives dataindicative of a new discovered vulnerability, the controller engine 310can identify a first set of assets directly affected by thatvulnerability. Also, the controller engine can 310 identify a second setof assets that are dependent (e.g., with respect to one or morerespective functionalities/operations) on assets of the first set. Forexample, client computing devices can be dependent on one or moreMicrosoft exchange servers for providing an email service, or on one ormore web gateway devices for providing access to the web. The controllerengine 310 can also identify a third set of assets that are dependent onassets of the second set. The ranking engine 316 can update (e.g.,increase) ranking values of assets in the first set responsive to thereceived data indicative of the new vulnerability. The ranking engine316 can also update ranking values of assets in the second set and thethird set. After the update, assets in the first set will haverelatively high rank value(s). Assets in the first set with highdependency (e.g., with relatively large number of assets in the secondand third sets depending on them) or assets facing an external unknownenvironment (e.g., a firewall handling communications with externalnetworks/entities) will have higher ranking values than other assets inthe first set. As such, the ranking values of the affected assets canrepresent priorities for addressing or patching the vulnerability ineach of these assets. Similarly, for an asset experiencing amisconfiguration or a reduction in its redundancy, or an asset flaggedby another asset or system as sending abnormal traffic, the rankingengine 316 will increase the rank value(s) of such asset.

The back-end system 222 can also include a software bus 302 (alsoreferred to as virtual bus). The software bus 302 can provide a sharedsoftware communication channel configured to facilitate connections andcommunication between various engines and modules of the CEMM system220. While depicted as a single component in FIG. 3, the software bus302 can include back-end component executing as part of the back-endsystem 222 and a front-end component executing as part of the front-endsystem 224. Each of these components can be associated with a respectivebus engine for handling communication and transfer of data betweenvarious engines and modules.

When an engine or a software module of the back-end system 222 wants toredirect data to another entity in the front-end system 224 (e.g., thevisualization engine 320), it can send a message to the software bus 302indicative of the data (e.g., via a respective pointer) and thedestination engine or module. The software bus 302 can then handle thetransfer of the data to the destination engine or module. In someimplementations, the software bus 302 can handle data transfer betweendifferent modules according to queue or a list of prioritized datatransfer tasks.

The front-end system 224 can include a visualization engine 320configured to handle display of asset data received from the back-endsystem 222. The visualization engine 320 can display data indicative ofasset vulnerabilities, asset dependencies, asset stress levels (e.g.,assets resources' usage levels), asset connections, asset dependencies,or any other asset information using a plurality of visual modes (orgraphical/UI components). Each visual mode provides a different way ofvisual representing data. The visualization engine 320 can determine theshapes, sizes, and colors of graphical elements used to visuallyrepresent the data (e.g., assets and respective parameters/information)within each visual mode. The visual engine 320 can also accommodate userpreferences by, for example, altering selected colors. The visual engine320 can also switch between different visual modes or between differentviews within a single visual mode responsive to user commands.

The visual modes can include a grid (also referred to as heatmap) visualmode, a sphere visual mode, a nodes visual mode, a chord visual mode, atable visual mode, a charts visual mode, a multi-component visual mode,or a combination thereof. Each visual mode can be configured to showdifferent aspects of the data or states of the computing and networkenvironment 210. Each visual mode can provide visual filters to filteror sort displayed data.

Visual modes can also provide visual controls to select one or moreassets to view. Therefore, the Visual modes can provide users withflexibility with regard to what data portion to display and how. Suchflexibility of visualizing data from different perspectives and atvarious granularities can help users navigate through and analyze largesets of data.

FIG. 8A shows a screen shot of a grid user interface (UI) componentcorresponding to grid visual mode. In the grid visual mode, thevisualization engine 320 can display the data in separate grids orarrays, with each grid representing correlated data according tospecified relationship(s)/parameter(s). For instance, grid 802 canrepresent a set of vulnerabilities affecting the computing and networkenvironment 210. Each cell (e.g. little square) in that grid representsa separate vulnerability. The color of each cell can be indicative ofthe severity of the respective vulnerability. Grid 804 can represent aset of assets of the computing and network environment 210. Each cell ingrid 804 can represent a separate asset with the cell colorrepresenting, for example, the number of vulnerabilities affecting thatasset. When a user selects one asset from grid 804, vulnerabilitiesaffecting the selected asset can be displayed in grid 806. The color ofeach cell in grid 806 can represent the severity of the respectivevulnerability.

The grid mode can provide a set of primary filters 801 and a set ofsecondary filters 803. The set of primary filters 801 can include, forexample, a vulnerability severity filter for filtering vulnerabilitydata based on respective severity levels. A user can select one or moreseverity levels and, in response, the visualization engine 320 candisplay only vulnerabilities with a severity level among the selectedseverity levels. The primary filters can include a ranking filter forfiltering the vulnerability data based on asset ranking values. The usercan select one or more asset ranking values and, in response, thevisualization engine can display only assets with a ranking value amongthe one or more selected asset ranking values. The primary filters canalso include zone and sub-zone filters to filter displayed vulnerabilitydata based on asset categories and sub-categories. Asset categories caninclude, for example, servers, workstations, data centers, networkappliances/devices, security assets (e.g., firewalls), or a combinationthereof. Asset sub-categories can be defined, for example, based ongeographic locations. In some implementations, the zone and sub-zonefilters can be configured to filter displayed vulnerability data basedon security zones and security subcategories of the assets. The primaryfilters 801 can also include a hold-the-line (HTL) filter for filteringdisplayed vulnerability data based on publication dates ofvulnerabilities. For example, HTL30 can be indicative of vulnerabilitiespublished within the last 30 days, HTL60 can represent vulnerabilitiespublished within the last 60 days, and HTL 90 can representvulnerabilities published within the last 90 days. The primary filters801 can also include a scanning date filter to filter displayedvulnerability data based on dates of latest vulnerability scans. Forexample, if the user selects certain dates, the visualization enginewill display only vulnerability data associated with vulnerability scansperformed within the selected dates. Another primary filter 801 caninclude a vulnerability classification filter. Vulnerabilityclassifications can include, for example, vulnerabilities with arespective patch available (PA), end of life (EOL) vulnerabilities whichare indicative of vulnerability for which no patches will be available,and/or zero-day (Z-day) vulnerabilities that are indicative ofvulnerabilities with no patches available yet.

Primary filters 801 can be common to various visual modes whendisplaying the same type of data (e.g., data). However, primary filters801 can vary based on the type of data (e.g., vulnerability data, assetconnections data, asset dependencies data, etc.) displayed. Secondaryfilters 803 can be specific to a visual mode. Secondary filters 803associated with the grid visual mode can include an OS filter to filterdisplayed vulnerability data based on asset operating systems. Forexample, the user can select to view only vulnerability data for assetsassociated with a specific operating system. Secondary filters 803 canalso include an open ports' filter to filter the displayed vulnerabilitydata based on assets with specific open ports. Another secondary filter803 can include a running services' filter to filter displayedvulnerability data based on assets with specific services runningthereon. Also, secondary filters 803 can include a search filter toidentify one or more assets based on, for example, respective DNShostname, NetBIOS hostname, IP address, or dependency value. Thevisualization engine 320 can be configured to display only vulnerabilitydata associated with the identified assets.

FIG. 8B shows a screen shot of a sphere UI component corresponding to asphere visual mode. In a sphere visual mode, the visualization engine320 can display data using circular (or hollow disc) shaped graphicalobjects, such as graphical objects 810, 812, and 814. Each of thegraphical objects 810, 812 and 814 can be subdivided into segments. Eachsegment can represent a respective asset or data point (e.g., a specificvulnerability). For example, the colored segments of graphical objects810 and 812 can represent separate assets of the computing and networkenvironment 210. The graphical object 812 can represent information(e.g., vulnerability information) associated with all assets in thecomputing and network environment 210, whereas the graphical object 812can represent information associated with a subset of assets definedbased on the primary filters 801 and the secondary filters 803. Thegraphical object 814 can represent a subset of vulnerabilities (e.g.,defined based on the primary filters 801 and the secondary filters 803)affecting assets of the computing and network environment 210.

The visualization engine 320 can represent several levels of dependentvariables and associations (e.g., communication links between assets,dependency relationships between assets, etc.) in multiplehollow-disc-shaped graphical objects. The visualization engine 320 canrepresent associations and/or relationships between a selected asset (ora selected segment of graphical object 810) and other assets via curvedlines 816 connecting the selected segment representing a selected assetto other segments representing other assets. Selecting a single segmentwithin graphical object 812 can cause the visualization engine 320 todisplay expanded details 818 about the corresponding asset (or datapoint) on the right side of the sphere UI component, and display the IPaddress of the asset corresponding to the selected segment in the middleor center of the graphical object 812.

The sphere visual mode can include the same primary filters 801 as inthe grid visual mode. The sphere visual mode can also include a set ofsecondary filters which may or may not be similar to secondary filtersassociated with other visual modes. Compared to the grid visual modeillustrated in FIG. 8B and the nodes visual mode illustrated in 8C, thesphere visual mode can be viewed as providing a more focused view (orlens) of the displayed data. Also, the sphere visual mode can beadequate for displaying data indicative of real-time varyingrelationships between various assets, such as communication linksestablished between separate assets of the computing and networkenvironment 210. For example, the visualization engine 320 can displaychanges in the curved lines 816 in real time as relationships (e.g.,connections or dependencies) between the selected asset and other assetschange over time. The colors of the segments in the graphical objects810, 812 and 814 can be indicative of a number of vulnerabilitiesaffecting each asset, a vulnerability severity level, a vulnerabilityclassification, an asset category, an asset ranking value, or otherparameters.

FIG. 8C shows a screen shot of a nodes UI component corresponding to anodes visual mode. In the nodes visual mode, the visualization engine320 can display data as nodes arranged into dynamic clusters. Each assetcan be displayed as a dot (or node) which dynamically migrates inrelation to other assets which share a specific set of criteria. Thecriteria can vary depending on the functional mode associated with auser (e.g., networking, vulnerability management, cyber security,compliance, etc.). The motion of the nodes is a controllable variable.The shape size or color of a given node can be indicative ofcharacteristics of the corresponding asset, such as the number ofvulnerabilities affecting the asset, the highest vulnerability severitylevel associated with the asset, the stress level associated with theasset, the asset ranking value, or other parameters. The visualizationengine 320 can represent relationships or associations (e.g.,communication links between assets, dependency relationships betweenassets, etc.) between separate assets using edges connecting respectivenodes.

The nodes visual mode can include the same primary filters 801 as in thegrid visual mode. The nodes visual mode can also include a set ofsecondary filters 803 which may or may not be similar to secondaryfilters associated with other visual modes. Selecting a node within thenodes UI component can cause the visualization engine 320 to displayexpanded details 820 about the corresponding asset on the right side ofthe nodes UI component. The expanded details 820 or 818 can includeinformation of the selected asset, such as IP address, NetBIOS, DNS, OS,asset category (or zone), asset sub-category (or sub-zone), number ofdependencies, number of vulnerabilities affecting the asset per severitylevel, IDs of vulnerabilities affecting the asset, or a combinationthereof. Other parameters or information can be displayed within theexpanded details of a selected asset.

Another visual mode can include a chord visual mode, which allowsdisplay of the data in a circular and a multi-layer format to visuallyrepresent a system's structure (e.g., structure of the computing andnetwork environment 210 or a sub-system thereof). The visualizationengine 320 can highlight relationships and links within the systemthrough connecting lines between points throughout the structure. Thevariables used to show relationships or associations can be dynamic andsubject to filtration. The visualization engine 320 can display aplurality of UIs associated with various visual modes simultaneously,for example, in multiple windows or in multiple display devices orscreens associated with a client device 223.

The visualization engine 320 can also support a table visual mode fordisplaying data in a table format. Each row in a table graphical objectcan be associated with a respective asset or data point, whereas tablecolumns can represent specific characteristics of the assets or datapoints. Primary and secondary filters can allow selection of the dataportion to be displayed. Selecting an individual data point or asset cancause the visualization engine 320 to display expanded details on thatdata point or asset. Another visual mode can be a charts visual modethat enables display of data via multiple charts. Separate charts can beassociated with respective parameters or characteristics of assets ordata points.

The visualization engine 320 can allow exporting data displayedaccording to various visual modes into a comma separated values (CSV)file format, portable document format (PDF), or other file formats. Thevisualization engine 320 can also be configured to allow switchingbetween various visual modes for a given set of displayed data. Thevisualization engine 320 can include a details module for displayingexpanded details for selected assets or data points. When a data pointor asset is selected within a given visual mode, the details module cancause display of a set of expanded details associated with that asset ordata point. The details module can be configured to present the expandeddetails in different forms depending on the visual mode. Possibleexpanded detail information can include asset information (e.g., assetnetwork information, asset vulnerability information, organizationalinformation (ownership, function, etc.) or vulnerability information(e.g., name, ID(s), severity level, existing solutions/patches, etc.).In some implementations, the visualization engine 320 can allow a user,via the UI, to select the parameters or characteristics to be displayedby the details module.

The visualization engine 320 can also provide action controls allowingthe user to initiate specific with respect to the displayed data. Forexample, action controls can allow the user to initiate actions takenupon one or more assets in real time, such as causing the CEMM system220 to launch a vulnerability scan, ping an asset, profiling one or moreassets, or delete a data portion. The action controls can also allow auser to export displayed data into one or more file formats.

Referring back to FIG. 3, the front-end system 224 can include apolarizing filtering engine 318 configured to manage loading data fromthe back-end system 222. In particular, when a client application islaunched (or initiated) on a computing device 223 of thefront-end-system 224, the polarizing filtering engine 318 can identifyprofile data associated with a user initiating the client application,or with a functional mode (e.g., indicative of the type of dataassociated with the client application). The polarizing filtering engine318 can send the profile data or indications thereof to the controllerengine 310, and the controller engine 310 can select and prepare a dataportion (or data container) for sending back to the polarizing filteringengine 318. The polarizing filtering engine 318 can also manage theprocess of refreshing dynamic data displayed by the visualizationengine. For example, if the visualization engine 320 is displayingcurrent communication links associated with one or more assets, thepolarizing filtering engine 318 manage the acquisition of real-timeupdates of the communication links data from the back-end system 222.Functions and tasks performed by the polarizing filtering engine 318 arediscussed in further detail with respect to section E below.

C. Situational Awareness

According to example embodiments of this disclosure, the CEMM system 220can assess the state(s) of operation of the computing and networkenvironment 210 or assets thereof. The state(s) of operation of an asset(or of the computing and network environment 210) refer to how thatasset (or the computing and network environment 210) is operating orfunctioning according to one or more criteria. For example, the state(s)of operation of a given asset can be indicative of whether therespective resources' usage (e.g., CPU usage, memory usage,communication bandwidth or communication ports usage, battery usage, orthe like) is within expected ranges; whether the asset, or the computingand network environment 210, is operating according to compliancerequirements, security requirements, business requirements, legalrequirements, or any other requirements specified, for example, in thespecification profiles; or whether the current asset configurationsconsistent with the respective configurations described in thespecification profiles. The state of operation of an asset can beindicative of an abnormal behavior or a cyber security event (e.g.,vulnerability, cyber security threat, cyber security attack, etc.)associated with the asset. The state of operation of an asset can alsobe indicative of a misconfiguration associated with the asset orsoftware/hardware module(s) thereof.

The CEMM system 220 can be configured to continuously, or regularly,monitor and assess the state(s) of operation of the computing andnetwork environment 210 or respective assets. The monitoring andassessment of the assets can allow the CEMM system 220 to be aware ofthe states and situations of the computing and network environment 210as they change over time. Such awareness, can allow the CEMM system 220to detect abnormal or unusual operational behavior (e.g., access of thecomputing and network environment 210 by blocked IP addresses,continuously high resources' usage in one or more assets,misconfiguration, or the like) as its occurs, and preemptively identifyits root cause and address it. Also, it can allow the CEMM system 220 toreact to cyber security events (e.g., security threats or attacks) andaddress them more reliably based on the knowledge of the operationstate(s) of the computing and network environment 210.

FIG. 9 shows a flowchart illustrating a method 900 for monitoring andassessing a state of operation of the computing and network environment.The method 900 can include identifying a target asset of the computingand network environment 210 for assessing respective states of operation(step 910) and establishing one or more communication links with one ormore computing devices associated with the target asset (step 9200). Themethod 900 can include determining a set of asset profiling parameters(step 930), transmitting a query for the set of profiling parameters tothe computing device(s) via the established communication link(s) (940),and receiving one or more parameter values responsive to thetransmission of the query (step 950). The method 900 can includecomparing the one or more parameter values to one or more criteria orthreshold values (step 960) and determining a state of operationassociated with the target asset based on the received one or moreparameter values or the comparison of the one or more parameter valuesto the to one or more criteria or threshold values (step 970). Themethod 900 can include repeating steps 930-960 a number of times toprofile the target asset according to a hierarchical profiling scheme todetermine, for example, a cause of abnormal behavior associated with thedetermined state of operation of the target asset.

The method 900 can include the controller engine 310 (or the assetprofiling engine 312) identifying a target asset of the computing andnetwork environment 210 for profiling or assessing respective state(s)of operation (step 910). The controller engine 310 can identify thetarget asset based on, for example, timing information related toscheduled events (e.g., scheduled periodic asset profiling events orscheduled system assessment events), a detected event (e.g., abnormal orunusual behavior of the computing and network environment 210), adiscrepancy in maintained or collected data (e.g., vulnerabilityscanning data, previous asset profiling data and/or specificationprofiles' data), a recently published cyber security threat orvulnerability, a received alert, the like, or a combination thereof. Forexample, the back-end system 222 can be configured to periodically orregularly profile some assets of the computing and network environment210, for example, according to a respective profiling frequency. Forexample, when the profiling period elapses, the controller engine 310can send an instruction to the asset profiling engine 312 to initiateprofiling of the assets. The controller engine 312 can identify thetarget asset based on respective ranking value(s). For example, thecontroller engine 312 can identify assets with respective ranking valuesexceeding a given ranking threshold value for profiling.

In some instances, the controller engine 310 can detect that a givenrequirement (e.g., compliance, security, legal, business or otherrequirement) of the computing and network system 210 may be violated,and identify one or more assets associated with that requirement forprofiling. For example, the controller engine 310 can detect (e.g.,based on profiling data of a server 211) that an IP address that isflagged by a compliance requirement (e.g., the compliance requirementstipulates that some specific IP addresses or IP addresses associatedwith a geolocation should be denied access to the computing and networkenvironment) has accessed the computing and network environment 210,and, in response, instruct the asset profiling engine 312 to profile thefirewall, a gateway, a router, one or more other assets, or acombination thereof. In some other instances, the controller engine 310can determine one or more assets that are affected with a vulnerability(e.g., based on vulnerability scanning data from vulnerabilityscanner(s) 230), or may be affected by a recently publishedvulnerability or other cyber security threat. In some instances, thecontroller engine 310 can identify one or more assets for profilingresponsive respective information being requested for display (or beingdisplayed) on a computer device 223 of the front-end system 224.

The method 900 can include the asset profiling engine 312 or thescheduling engine 314 establishing one or more communication links withone or more computing devices associated with the target asset (step920). In some instances, the target asset can be the computing deviceitself. In some other instances, the target asset can be associated witha plurality of computing devices (e.g., a firewall or a softwareplatform), or can be a component of (e.g., a software applicationinstalled in or a hardware component of) the computing device. Thecommunication link can be a secure communication link or channel.

The method 900 can include the asset profiling engine 312 determining aset of profiling parameters (step 930). The set of profiling parameterscan represent parameters to be requested from the target asset, such asasset information (e.g., IP address, MAC address, NetBIOS, etc.), assetconfiguration parameters, asset communication logs, asset CPU usage,packet drop rate, the like, or a combination thereof. In someimplementations, determining the profiling parameters can include theasset profiling engine 312 selecting a profiling template for profilingthe target asset. A profiling template can include (or represent) aquery for sending to the target asset. In some implementations, theasset profiling engine 312 can determine the set of profiling parameters(or the profiling template) according to a hierarchical asset profilingscheme. The hierarchical asset profiling scheme can include multipleprofiling templates, each associated with a respective profiling depth.

The method 900 can include the asset profiling engine 312 transmitting,via the one or more established communication links, a query to the oneor more computing devices to request the determined profiling parameters(step 940), and receive, via the established communication link(s), dataincluding one or more parameter values responsive to the query (step950). The received parameter values can include, for example,communication logs of the target asset (or the communication devices)indicative of IP addresses with which the target asset communicated (oris communicating) for a given last period of time (e.g., the last fewdays, the last few hours, the last 60, 30 or 20 minutes, or any othertime period), configuration data including hardware or softwareconfiguration parameters (e.g., browser settings, user access list,access level per user, etc.), CPU usage data (cumulative CPU usage, CPUusage per software module, cache memory usage values, etc.), networkusage data, memory usage data, the like or a combination thereof.

The method 900 can include the asset profiling engine 312 comparing theone or more parameter values to one or more criteria or respectivethreshold values (step 960). The criteria can include requirements orspecifications defined in the specification profiles associated with thetarget asset or the computing and network environment 210. For instancethe criteria can include a list of blocked IP addresses or blockedGeo-IP addresses (e.g., IP addresses associated with a givengeolocation) specified in a compliance profile, a list of encryptionrequirements (e.g., a list of data files, databases, or assets to beencrypted, encryption methods, or combination thereof) defined in one ormore security profiles, redundancy requirements (e.g., number ofreplicas of the target asset, IDs of target asset replicas, etc.), orany other requirements or specifications associated with the targetasset or the computing and network environment. Threshold values caninclude, for example, benchmark parameter values to determine whether anasset is under stress. For example, a CPU usage level of 95% or more fora period of time equal to or exceeding 10 mins can imply that thecorresponding asset is under computational stress. Also, a packet droprate threshold value that is exceeded for a respective threshold timeperiod can imply (or be interpreted by the asset profiling engine) thatthe corresponding asset is under communication stress. In someimplementations, the one or more criteria or threshold values can bespecific to the target asset. For instance, for each asset of thecomputing and network environment 210, the CEMM system 220 (e.g., thecontroller engine 310) can define a respective set of criteria orthreshold values for use in assessing the state(s) of operation of thatasset. For example, the CEMM system 220 can define the criteria orthreshold values for a given asset based on the specification profilesassociated with that asset.

Comparing the one or more parameter values to the one or more thresholdvalues or criteria can include computing (or generating) a set ofdeviation values (or deviation vectors or matrices) that represent thetarget asset's deviations from the respective specification variablesand/or the respective threshold values. The computed deviation valuescan be used to detect substantial deviations from the specificationprofiles and alert operators of the computing and network environment210. In particular, the computed deviation values can allow the CEMMsystem 220 to assess how well the target asset (and the computing andnetwork environment is complying with the specification profiles. Forexample, based on such deviation values, the

CEMM system 220 can determine whether the target asset was mistakenly orintentionally assigned to a wrong security zone. In such case, thecontroller engine 310 can identify the technical owner of the targetasset based on respective specification profiles, and alert that ownerwith regard to the change in the security zone of the target asset. TheCEMM system 220 can also determine based on the computed deviationvalues, for example, whether the target asset is redundant as it wasdesigned (e.g., according to the respective redundancy profile) or didits redundancy system break.

In response to the received parameter values (or the computed deviationvalues), the controller engine 310 (or asset profiling engine 312) candetermine one or more states of operation of the target asset (step970). The one or more states of operation can be indicative of whetherthe asset is under stress (e.g., one or more resources' usage exceedingthreshold value(s) for at least a specified time duration), whether agiven requirement is violated, whether the asset is subject to aspecific misconfiguration, whether the asset is subject to an ongoingcyber security attack, whether the asset is affected with a non-patchedvulnerability, the like, or a combination thereof. Determining thestate(s) of operation can include the asset profiling engine 312 or thecontroller engine 310 updating one or more state variables correspondingto the one or more determined states of operation. For example, for anasset that is used for financial live trading and is designed to beredundant and to execute transactions error free, the controller engine310 can update the high-availability (HA) state variable of that assetto False if the asset's speed for synchronizing the data is not fastenough (e.g., synchronization speed below a respective threshold value).Setting the HA state variable to False makes the asset no longer HAavailable. The asset profiling engine 312 or the controller engine 310can set the HA True or False (or 1 or 0) states based on, for example,what is an acceptable deviation from a desired synchronization speed. Insome implementations, a number of state variables can be associated witheach asset, such as a HA state variable, one or more stress level statevariables, one or more security state variables. The back-end system 222(e.g., the controller engine 310) can define such state variables basedon the specification variables in the respective specification profiles.The asset profiling engine 312 can update the state variables associatedwith the target asset based on the parameter values received at step 950or the comparison performed at step 960.

In some implementations, the ranking engine 316 can update a rankingvalue associated with the target asset based on the updated statevariables. For example, an asset that is designed to be continuouslylive (e.g., on and responding) can have low tolerance forsynchronization delay, while an archiving asset (or an asset associatedwith an archiving system would have a high tolerance for the same thing)can have a higher tolerance for synchronization delay. As such, a HAweight value can be associated with an asset based on, for example, therespective specification profiles. Such HA weight value can representhow important is high availability for that asset. The ranking engine316 can update the rank value of the target asset based on the HA weightvalue of the target asset upon a change is determined in the HA statusof the target asset. For example the ranking engine 316 can update arank R of the target asset by incrementing R with (HA weight value×α),where α is a real number.

The method 900 can include the asset profiling engine 312 (or thecontroller engine 310) determining a cause of an abnormal behavior (orundesired state) associated with the target asset or the computing andnetwork environment 210. An abnormal behavior can include granted accessto a blocked IP address, unusually high stress (e.g., relatively highresources' usage), misconfiguration, continuously generating high datatraffic with one or more other assets, attempts to access blockedwebsites or databases, or the like. Examples of a cause of the abnormalbehavior can include a non-patched vulnerability, a user modification toasset configuration, a software application associated with the targetasset or settings thereof, an implementation of a requirement specifiedin the specification profiles, or the like.

In some implementations, the method 900 can include the asset profilingengine 312 looping back to step 930 to determine a second set ofprofiling parameters based on the result of the comparison at step 960.The asset profiling engine 312 can loop back to step 930 to perform acontext-based hierarchical profiling scheme to determine a cause of theabnormal behavior. The asset profiling engine 312 can loop back to step960 based on, for example, a decision profiling tree. The assetprofiling engine 312 can transmit a second query to the one or morecomputing devices based on the second set of profiling parameters (step940), receive one or more second parameter values responsive to thesecond query (step 950), perform a second comparison between the one ormore second parameter values and one or more second criteria orthreshold values (step 960). Based on the profiling decision tree, theasset profiling engine 312 may loop back again to step 930. In suchcase, the asset profiling engine 312 can determine a third set ofprofiling parameters based on the results of the second comparison,transmit a third query to the one or more computing devices based on thethird set of (step 940), receive one or more third parameter valuesresponsive to transmission of the third query, and compare the one ormore third parameter values to one or more third criteria or thresholdvalues.

FIG. 10 shows a diagram illustrating a decision profiling tree 1000indicative of a context-based hierarchical profiling scheme. The parentnode 1010 can be associated with a respective first set of profilingparameters or a first profiling template. The first set of profilingparameters or the first profiling template can be indicative of a queryfor cumulative CPU usage and cumulative network usage. If the cumulativeCPU usage exceeds a first CPU usage threshold value, then the decisionwill be to move to the node 1020. Node 1020 can be associated with asecond set of CPU profiling parameters or a second CPU profilingtemplate. The second set of CPU profiling parameters or the second CPUprofiling template can be indicative of a query for CPU usage perprocessor core. If CPU usage of a given processor core exceeds a thirdCPU usage threshold value, the decision will be to move to node 1040.Node 1040 can be associated with a third set of CPU profiling parametersor a third CPU profiling template. The third set of CPU profilingparameters or the third CPU profiling template can be indicative of aquery for CPU usage per process with respect to the given processorcore. At node 1070, the asset profiling engine 312 can compare CPU usagevalues for a plurality of processes to a fourth CPU usage thresholdvalue.

Furthermore, node 1030 can be associated with a second set of networkprofiling parameters or a second network profiling template to be usedfor querying a respective asset if the cumulative network usage is foundto exceed a respective network usage threshold vale. The second set ofnetwork profiling parameters or the second network profiling templatecan be indicative of a query for network usage per communication port.Also, node 1050 can be associated with a third set of network profilingparameters or a third network profiling template. The third set ofnetwork profiling parameters or the third network profiling template canbe indicative of a query for application associated with a respectiveport and the network usage for each application associated with thatport.

While the decision profiling tree 1000 illustrates a contextualhierarchical scheme based specific to CPU usage and network resourcesusage for a given asset, similar decision profiling trees can be definedby the CEMM system 220 for asset configuration, asset communicationlogs, or any other aspects of a given asset. Also, the profilingdecision tree 1000 should not be interpreted as limiting whether interms in the number and arrangement of respective nodes, or in terms ofthe query associated with each node. In particular, the number ofprofiling steps (or profiling queries) along any path in a profilingdecision tree can vary based on, for example, the respective asset, thepath, or a combination thereof. Such number of profiling steps (orprofiling nodes) can be equal to 1 or any integer greater than 1. Insome implementations, each asset among a plurality of assets can beassociated with one or more respective profiling decision trees specificto that asset.

The asset profiling engine 312 can determine the cause of the abnormalbehavior based on, for example, the last received parameter values (atstep 950) or the last comparison (at step 960). In particular, the assetprofiling engine 312 can determine the cause of the abnormal behaviorbased on a profiling decision tree (e.g., decision profiling tree 1000)associated with the target asset. For example, the asset profilingengine 312 can determine the abnormal behavior when reaching a leaf node(e.g., nodes 1060 or 1070 of FIG. 10). The leaf nodes of the profilingdecision tree can include indications of possible causes based on, forexample, received profiling parameter values responsive to the queryassociated with the respective parent node. For example, node 1060 ofthe profiling decision tree 1000 can include indications of possiblecauses of the abnormal behavior based on the CPU-usage-per-processvalues received from the target asset.

In some implementations, a profiling decision tree, such as profilingdecision tree 1000, can cause the asset profiling engine 312 to profilea second asset. For example, instead of looping back from step 960 tostep 930, the profiling engine 312 may determine at step 960 thatanother asset may be associated with an abnormal behavior exhibited bythe currently profiled asset. The asset profiling engine 312 may, inresponse, initiate profiling the other asset according the methods 600and/or 900 described in FIGS. 6 and 9. For instance, if the other assetis not responding to a profiling query or a request to establish acommunication link, the asset profiling engine 312 may employ queryingby proxy as discussed with regard to step 660 of FIG. 6. If the otherasset is responsive, the asset profiling engine 312 may directly profilethe other asset according to a respective profiling decision tree.

In some implementations, the controller engine 310 can send anindication of the state(s) of operation, the abnormal behavior, thedetermined cause, the received profiling parameters, or a combinationthereof to the front-end system 224 for display on a computer device223. For example, the controller engine 310 can send an alert indicativeof the target asset, the abnormal behavior, or the determined cause to acomputer device 223 running a client application of the CEMM system 220.The controller engine 310 can provide state assessment data, e.g., oneor more received parameter values, indication of the comparison(s)result(s), indication of the abnormal behavior, indication of determinedcause, or a combination thereof of the target asset, for display on thecomputer device 223.

In some instances, the state(s) of operation can include theinterconnection state(s) of the target asset. In such instances, if aclient application of the CEMM system 220 is displaying interconnectionstates for a given asset (e.g., logical communication links orcommunication channels established between the given asset and otherassets), the controller engine 310 can cause the asset profiling engine312 to profile the given asset periodically (e.g., over periods of timein the range of seconds or minutes), determine interconnection states(e.g., established communication channels), and provide data indicativeof the interconnection states for sending to the client application. Ifdata related to an asset unknown to the CEMM system 220 is received, theprofiling engine 312 or the controller engine 310 can save that datainto a temporary memory bank until it is allocated to a known asset or anew asset is created. If interconnection data associated with the givenasset is indicative of abnormal behavior, e.g., continuously highbandwidth usage or persistently high packet drop rate with respect torespective threshold values and time duration values, the assetprofiling engine 312 can perform context-based hierarchical assetprofiling as described above.

In some implementations, the assessment of state(s) of operation caninclude monitoring unused IP addresses of the computing and networkenvironment 210 to identify potential intruders. For example, if thereare 1000 IP addresses associated with of the computing and networkenvironment 210 and only 900 of them are allocated to assets of thecomputing and network environment 210, the asset profiling engine can beconfigured to periodically or regularly ping the unused IP addresses todetermine whether they are being used by any computer devices. If an IPaddress among the 100 IPs is determined to be used by a computer device,the asset profiling engine 312 may profile that computer device todetermine whether it an undesired intruder or a new device added of thecomputing and network environment 210.

In some implementations, the assessment and visualization of states ofoperations of assets associated with the computing and networkenvironment 210 can allow operators, system architects, or executivesassociated with the computing and network environment to identify issuesin design and/or architecture of the environment 210 and address suchissues. For example, real-time monitoring (e.g., using asset profilingdata that is displayed in real time) of asset interconnections, assetresources' usage, or relationships/dependencies between various assets,operators can flag, for example, persistent undesired behavior. Also, ifchanges are made to the design or architecture of the environment 210,the real-time monitoring of states of operation can allow users tovisualize the effects of the changes made on the operations of one ormore assets or the environment 210 as a whole. The back-end system 222can determine dependency parameters for a given asset based onspecification profiles data (e.g., data indicative of interconnectionsbetween various assets), asset profiling data (e.g., indicative ofinstalled software applications or communication logs of the asset), orother collected data.

D. Monitoring and Managing Vulnerabilities

A vulnerability can be a weakness or flaw associated with the design,implementation, or operation of a hardware or software asset or a groupof assets. The weakness or flaw can provide opportunities ofunauthorized intrusions to a computer environment (such as computing andnetwork environment 210) employing hardware or software assets affectedwith the vulnerability. Vulnerability scanners 230 are tools fordetecting vulnerabilities affecting computer environments or computersystems. The vulnerability scanner(s) 230 can scan, upon execution, thecomputing and network environment 210 to determine vulnerabilitiesaffecting assets of the computing and network environment 210. Usingresults provided by the vulnerability scanner(s) 230, an operator of thecomputing and network environment 230 can manage and execute patching ofthe detected vulnerabilities.

Vendor databases 240, cyber security databases 250, authority databases260, and/or other providers of cyber security data usually publishidentified vulnerabilities. They also publish solutions or patches(e.g., pieces of software for fixing respective vulnerabilities) whenavailable. A published data item (e.g., an electronic file or a portionthereof) indicative of a respective vulnerability can include anidentifier of that vulnerability assigned by the publisher or otherentity, a description of the vulnerability, a severity level, assetsaffected, or a combination thereof. The publishing of identified orknown vulnerabilities puts operators of computer environments orcomputer system on notice. Also, such publishing leads providers ofvulnerability scanners to update or upgrade their scanners based onnewly published vulnerabilities. Furthermore, the publishing ofvulnerability patches or solutions allows operators of the computing andnetwork environment 210 (or other computer systems) to fix affectedassets or mitigate the risk of the respective vulnerabilities.

However, the publishing of vulnerabilities also makes hackers andmalfeasors aware of the respective weaknesses or flaws. As they becomeaware of such weaknesses or flaws, hackers and malfeasors can design orimplement processes for exploiting the published vulnerabilities toaccess assets of the computing and network environment 210 and/or temperwith resources thereof. As such, the earlier vulnerabilities associatedwith computing and network environment 210 are fixed or patched, theless likely they lead to actual attacks or successful intrusionattempts. However, the complexity of most computer environments orsystems (e.g., in terms on the number of assets and respectiveinter-dependencies), the constraints associated with vulnerabilitypatching (e.g., resetting, disconnecting or shutting down electronicdevices or respective services), and/or the number of known or publishedvulnerabilities make the management of vulnerability patching acomplicated multi-dimensional problem. In other words, while it may seemtrivial and common sense to fix vulnerabilities as soon as respectivepatches are available, operational, business, legal, compliance, orsecurity requirements associated with the computing and networkenvironment 210 may impose complex constraints on the way the patchingprocess is to be executed.

Furthermore, the deployment of vulnerability patches to the computingand network environment 210 can be a complicated and cumbersome process.For example, Microsoft can publish vulnerability patches on a monthlybasis (e.g., one a month). Responsive to the monthly publication, systemoperators usually start managing and executing the patching ofvulnerabilities affecting their computer systems. The patching processusually involves a considerable amount of a continuously changingautomation to test and push these patches out while still complying withbusiness continuity requirements. Also, once patched, affected assetsmust be assessed for any remaining vulnerabilities. Since the number ofassets that are to be assessed (e.g., after patching) can be in the tensor hundreds of thousands, the prioritization of the patching andfollowing assessments is highly desired to maintain business continuitywhile substantially reducing the risk of the respective vulnerabilities.

Systems and methods described herein provide comprehensive solutions fordetecting vulnerabilities and respective affected assets, and managingasset priorities in terms of addressing or patching the detectedvulnerabilities. The detection of affected assets or the assignment ofasset priorities can take into account various factors and aspects (suchas various requirements, design or architectural specifications or acombination thereof) of the computing and network environment 210,current state(s) of one or more assets, and/or information related todetected vulnerabilities. In particular, the systems and methodsdescribed herein can take into account, for example, assetinter-dependencies and/or inter-connections, asset redundancyinformation, asset configuration information, asset stress levelinformation, or a combination thereof to determine the extent (e.g., interms of the number of directly or indirectly affected assets, theimportance of each affected asset to the operation and mission of thecomputing and network environment 210, the severity or risk associatedwith each detected vulnerability, etc.) to which the computing andnetwork system 210 is affected by the detected vulnerabilities, and tomanage asset priorities in addressing such vulnerabilities. As such, thesystems and methods described herein can efficiently and reliably manageeven large numbers (e.g., hundreds or thousands) of detectedvulnerabilities by prioritizing, for example, assets with highimportance (e.g., functional or dependency importance) or high severityvulnerabilities while still complying with requirements and regulationsassociated with the computing and network environment 210. Furthermore,the systems and methods described herein can substantially alleviate theburden associated with vulnerability from a monthly chore and massivemonthly overhaul project, to regular task. Also, the systems and methodsdescribed herein allow for continuous monitoring and auditing of thecomputing and network environment with respect to addressingvulnerabilities.

FIG. 11 shows a flowchart illustrating a method 1100 for determiningpriority levels for addressing or processing vulnerabilities associatedwith the computing and network environment 210. The method 1100 caninclude receiving a plurality of specification profiles of the computernetwork (step 1110), receiving vulnerability data from a vulnerabilityscanner (step 1120), and receiving vulnerability data associated withthe computing and network environment 210 from a vulnerability scanner(step 1130). The method 1100 can also include establishing one or morecommunication channels with tone or more assets of the computing andnetwork environment 210 (step 1140), and receiving asset profiling data,via the established communication channel(s) from the one or more assets(step 1150). The method 1100 can also include computing, for each of aplurality of assets of the computer network affected with avulnerability, a respective priority ranking value indicative of a levelof addressing the vulnerability in that asset, using the specificationprofiles, the vulnerability data and the asset profiling data (step1160).

The method 1100 can include the data collection engine 304 receivingspecification profiles' data of the computer network (step 1110). Asdiscussed above with regard to FIGS. 3 and 5, each of the specificationprofiles can include (or define) one or more specification variablesindicative of specification parameters related to the design (orarchitecture), configuration, or requirements associated with thecomputer network or respective assets. The data collection engine 304can receive the specification profiles' data via user input or fromcomputer devices or databases associated with the computing and networkenvironment 210. In some implementations, the data collection engine 304can be configured to receive the specification parameters' data andarrange the received data into specification profiles as discussed withregard to FIGS. 3 and 5. In some implementations, the data collectionengine 304 can generate one or more specification profiles for each of aplurality of assets of the computing and network environment 210. Thespecification profiles for a given asset can include informationindicative of asset configuration, design, and/or architecturalvariables or information. In some instances, one or more specificationprofiles can be associated with the computing and network environment210 or a respective subsystem.

The method 1100 can include the data collection engine 304 receivingvulnerability scanning data from a vulnerability scanner (step 1120).The data collection engine 304 can establish (or cause the schedulingengine 314 to establish) a communication link with the vulnerabilityscanner(s) 230 (e.g., as discussed with regard to FIG. 7 above). Thedata collection engine 304 can send a request to the vulnerabilityscanner(s) 230 to scan the computing and network environment 210 orrespective assets for vulnerabilities. The request can be indicative ofa full scan (e.g., to scan all assets or all computer devices in thecomputing and network environment 210) or a partial scan (e.g., to scana subset of the assets or computer devices). In response, thevulnerability scanner(s) can perform the scan and send the vulnerabilityscanning data to the CEMM system 220. The vulnerability data can includeinformation identifying scanned assets (e.g., IP address, MAC address,asset name, NetBIOS, OS, asset installed applications, software/hardwarevendor(s), logs, configuration parameters, or a combination thereof),detected vulnerabilities (e.g., ID, severity level, patch if any, datepublished, publisher, or a combination thereof), assets affected by eachvulnerability, or a combination thereof.

The data collection engine 304 can scan the received vulnerabilityscanning data to determine, for example, vulnerabilities affecting eachasset of the computing and network environment 210, the severity levelof each vulnerability, a classification of each vulnerability (e.g.,whether or not a patch is available such as PA, EOL or Z-day), apublication date for each vulnerability. The data collection engine 304can classify vulnerabilities based on respective publication dates, forexample, according to HTL30, HTL60, and/or HTL90 classifications. Thedata collection engine 304 can also download or request patches (e.g.,software instructions to fix respective vulnerabilities) if available.For example, the data collection engine 304 can determine linksindicative of vulnerability patches in the received vulnerabilityscanning data. In response, the data collection engine 304 can use suchlinks to download the vulnerability patches.

In some implementations, the data collection engine 304 can beconfigured to receive vulnerability scanning data from a plurality ofvulnerability scanners, and merge the received vulnerability data, forexample, as discussed with regard to FIGS. 4A and 4B. The datacollection engine 304 can also receive, from one or more other datasources (e.g., databases 240, 250 or 260), data associated withpublished vulnerabilities, and supplement the vulnerability data fromthe vulnerability scanner(s) 230 with the data associated with publishedvulnerabilities. For example, the data collection engine 304 can adopt,for a given vulnerability, a severity level or a description provided byone of the data sources rather than that provided by the vulnerabilityscanner(s) 230.

The method 1100 can include the asset profiling engine 312 establishing(or causing the scheduling engine 314 establish) a communication linkwith a target asset of the computing and network environment 210 toprofile the target asset (step 1130). The communication link can be asecure logic communication link. In some implementations, the assetprofiling engine 312 can be configured to profile each asset scanned bythe vulnerability scanner(s) 230 or each asset affected by avulnerability. For instance, the asset profiling engine 312 or thecontroller engine 310 can scan the data received from the vulnerabilityscanner(s) 230 to identify assets listed therein or assets affected byone or more vulnerabilities. In some implementations, the controllerengine 310, for example, can identify a discrepancy associated with thevulnerability scanning and or specification profiles' data. For example,the IP address of a given asset can be different in two vulnerabilityscanning data sets from two distinct vulnerability scanners 230. Also,values for a given specification variable can be different in aspecification profile and received vulnerability scanning data. In suchcases, the controller engine 310 can identify assets associated withsuch discrepancies and instruct the asset profiling engine 312 toprofile the identified assets. Establishing the communication link caninclude the asset profiling engine 312 to cause the scheduling engine314 (e.g., as described above with regard to FIG. 7) to establish thecommunication link.

The method 1100 can include the asset profiling engine 312 sending aprofiling query to the asset via the stablished communication link (step1140). As described above with regard to FIG. 9, the asset profilingengine 312 can determine or select a set of profiling parameters basedon, for example, the asset to be profiled, the trigger event of theasset profiling, or other criteria. The asset profiling engine 312generate the query based on the selected set of profiling parameters. Insome instances, the asset profiling engine 312 can select a profilingtemplate that is indicative of a query to be sent to the asset to beprofiled. The asset profiling engine 312 can employ light assetprofiling, hierarchical asset profiling, or any other profiling mode toprofile the asset.

The asset profiling engine 312 can receive, from the asset, via thecommunication link, asset profiling data, responsive to the query (step1140). The profiling data received from the asset can include parametervalues corresponding to profiling parameters indicated in the request.If the profiling process was initiated responsive to a detecteddiscrepancy, the asset profiling engine 312 or the controller engine 310can update or assess the reliability of the vulnerability scanning datareceived at step 1120 using the received profiling data. For example, ifthree data sources have the same value for a given variable (e.g.,similar within a % error/deviation), and the received profiling dataconfirms that value, the controller engine 310 can mark the variablevalue as a low error variable value. If, however, three (or other numberof) data sources are reporting mismatching value for the variable, thenthe asset profiling engine 312 can take full control of polling thisvariable value from the asset, for example, by profiling the asset oneor more times to provide a more reliable value of the variable. Theasset profiling engine 312 can update the vulnerability data with thevalue received from the asset.

The method 1100 can include the ranking engine 316 computing a rankingvalue indicative of a priority of fixing the profiled asset with respectto one or more a vulnerabilities affecting the asset compared to otherassets (step 1150). In particular, the ranking value can be indicativeof a priority of pushing vulnerability patch(es) to the profiled assetscompared to other affected assets. As discussed above with regard todescription of the ranking 316 in relation to FIG. 3, the ranking engine316 can compute the ranking values based on specification profiles' dataassociated with the asset, the received vulnerability data, and theprofiling data. The specifications profiles' data can include parametersor information (e.g., business ownership, high availability, redundancy,dependency, other characteristics/requirements, etc.) indicative of theimportance of the profiled asset to the mission and operation of thecomputing and network environment 210. For example, an asset with a highlevel of functional dependencies (e.g., a larger number of other assetsdepend on it for one or more of their functions or operations), can beperceived as an important asset that needs to be prioritized in terms ofvulnerability patching. High severity vulnerabilities can be assignedhigher weights in order for them to be prioritized. The receivedvulnerability data can include information indicative of thevulnerabilities affecting the asset such severity levels, which indicatehow severe is each vulnerability in terms of associated risk. The assetprofiling data can include information indicative of the state(s) ofoperation of the asset. For example, the asset profiling data can beindicative of at least one of a connectivity status parameter, memoryusage parameter, processing power usage parameter, network resources'usage parameter, interconnections parameters, the like, or a combinationthereof. Assets that suffer from abnormal behavior with respect to oneor more aspects can be assigned higher weights than assets with normalstates of operation.

Taking into account all these aspects of the asset in computing theranking value(s) allows for comprehensive and reliable prioritizingapproach in handling detected vulnerabilities. The ranking engine 316can compute the ranking value as a weighted sum of multiple parametervalues associated with the specification profiles, the receivedvulnerability data, and the received profiling data. In someimplementations, the ranking engine 316 can compute the ranking value asa weighted sum of multiple parameter values associated with thespecification profiles and the received vulnerability data. The CEMMsystem 220 can repeat the method 1100 for a plurality of assets (e.g.,assets affected with vulnerabilities). The ranking engine 316 cancompute ranking values for various assets of the computing and networkenvironment 210, for example, each time new vulnerability scanning datais received from one or more vulnerability scanners or other datasources (e.g., databases 240, 250, or 260). The ranking engine 316 canalso update the ranking values dynamically, for example, responsive tonew received asset profiling data or other data indicative of changes instates of operation of one or more assets affected with thevulnerability, detected cyber security events (e.g., cyber securitythreats or attacks), or a combination thereof.

The controller engine 310 can be configured to provide the vulnerabilitydata, the specification profile data, the profiling data, the priorityranking values, or portions thereof for display by a client applicationrunning on a front-end computer device 223. The controller engine 310can store such data in a memory or cache memory and then instruct thesoftware bus to transfer the data to the front-end system 224. In someimplementations, the back-end system 222 can transfer the data to thefront-end computer device 223 can be in real-time (e.g., immediately orwithin a second after computing the ranking values for one or moreassets). For example, the method 1100 can be initiated responsive to arequest from the client application running on the front-end computerdevice 223. In response, the back-end system 222 can perform the method1100 and send collected data or computed ranking values to the front-endcomputer device 223. In some implementations, the data collection engine304, or the controller engine 310 can compress the vulnerability data,the specification profile data, the profiling data, the priority rankingvalues, and/or portions thereof. The controller engine 310 can cause thecompressed data to be sent to the client application running on afront-end computing device 223 for display. Compression of the dataallows for fast transfer of the data and efficient use of thecommunication resources between the back-end system 22 and the front-endsystem 224. The controller engine 310 can also cause storage of thevulnerability data, the specification profile data, the profiling data,the priority ranking values, or portions thereof to be stored in thedatabase 306.

In some instances, the controller engine 310 can be configured toautomatically send vulnerability patches to various assets of thecomputing and network environment 210 according to a priority orderdefined based on the computed priority ranking values. For instance, thecontroller engine 310 can schedule vulnerability patching for aplurality of assets affected with the vulnerabilities indicated in thevulnerability data. The scheduling can be based on the computed rankingvalues, availability of the patches, business requirements associatedwith various assets, or a combination thereof. For instance, assets withhigher ranking values can be scheduled to be patched before assets withlower ranking values. As the ranking values can be dynamically updated,the controller engine 310 can dynamically update the patching scheduleresponsive, for example, to changes in the ranking values.

E. Multi-Layer Caching of Data for Display

In monitoring the states of operation, vulnerabilities, and/or cybersecurity threats, the back-end system 222 can continually collect data(e.g., vulnerability data, asset profiling data, or data from othersources such as databases 240, 250 or 260). For example, the back-endsystem 222 can acquire data from a plurality of data sources at varioustime intervals or frequencies. For example, the controller engine 310can define a frequency to refresh data (e.g., via asset profiling)associated with each asset based on the importance of that asset. Thecontroller engine 310 can also set a frequency for receiving (orfetching) data from the vulnerability scanner(s) 230, the database(s)240, 250, or 260, or other data sources. Also, the controller engine 310can trigger data acquisition (e.g., asset profiling, vulnerabilityscanning, fetching databases) responsive to one or more events, such asdata requests from the front-end system 224, vulnerability or abnormalbehavior detection, publication of new vulnerability or cyber securitythreat, received alerts, detection of violation of one or morerequirements, or a combination thereof.

The amount of data collected by the back-end system 222, even over ashort period of time, can be significantly large, especially for a largecomputing and network environment 210 (e.g., with thousands, tens ofthousands or hundreds of thousands of assets). Such large amount of datacan pose significant technical challenges with respect to storage,access, and transfer of the collected data. For instance, as the amountof data collected increases over time, it may exhaust the storagecapacity of the back-end system 222. Furthermore, as the amount of datastored increases, fetching and access of the stored data may requiremore processing power and may become slower. In addition, transfer oflarge amounts of data to the front-end system 224 for display may callfor repetitive and power consuming data fetching (at thefront-end-system 224), for example, as the visualization engine 320switches between visual modes or UI views. Accordingly, display of thedata may suffer latency at the front-end system 224.

Systems and methods described herein allow for efficient and fasttransfer of data from the back-end system 222 to the front-end system224. These systems and methods also allow for real time display of dataassociated with one or more assets as such data is acquired by theback-end system 222. Specifically, the CEMM system 220 can allow forreal-time updating of data displayed by the front-end system 224. Forexample, if data associated with a given asset (e.g., an asset with arelatively high ranking value, a relatively high stress level, or anabnormal behavior) is being displayed by the front-end system 224, theback-end system 222 can simultaneously acquire updates of that data(e.g., via asset profiling, triggering vulnerability scanning, orfetching external databases) and send data updates immediately to thefront-end system 224. As such, users of the front-end system 224 canvisually monitor various aspects of the computing and networkenvironment 210 or respective assets in real time (e.g., as states ofoperation for one or more assets change over time).

The back-end system 222 can be configured to compress acquired orcomputed data for storage (e.g., in a memory or in the database 306) orfor transmission to the front-end system 224. The controller engine 310can cause a compression module to compress the data into compressed datasegments. For example, the controller engine 310 can generate, for eachtime interval of a defined duration, a respective data segment, andcause the compression module to compress that data segment. Forinstance, the controller engine 310 can generate data segmentscorresponding to data acquired in successive intervals of one hourduration, 30-minutes duration, or any other duration.

Generating the data segments can include eliminating data redundancy(e.g., by merging data from various data sources as described withregard to FIGS. 3A and 3B) or arranging the data according to a givenscheme. For example, the controller engine 310 can generate a datasegment as a collection of data sub-segments associated with, forexample, distinct assets or distinct functional aspects. The functionalaspects can be associated with different types of operators monitoringthe computing and network environment 210 (e.g., network operator(s),cyber security operator(s), compliance operator(s), etc.) who may beinterested in different portions of the data. For example, networkoperators may be interested mainly in data indicative of communicationsand data traffic between various assets, whereas cyber securityoperators may be interested mainly in data indicative ofvulnerabilities, abnormal behavior, or any potential cyber securitythreat. Arranging the data into data segments or data sub-segments canimprove the speed of fetching or decompressing the data. Upon receivinga data request indicative of a data time period from the front-endsystem 224 (or a client application thereof), the controller engine 310can fetch only data segments corresponding to that data period. Also,the controller engine 310 can compress the data sub-segments within agiven data segment independently to allow for partial decompression(e.g., decompressing only that data sub-segment.

For each data segment, the controller engine 310 can compute one or morestatistical parameters each corresponding to a respective set of datavalues. For example, for CPU usage values, cache memory usage values,bandwidth usage values, or data packet drop rate values in the datasegment, the controller engine 310 can compute respective mean,variance, standard deviation or median values. The controller engine 310can replace data values in a data segment with respective statisticalparameter values, for example, once a certain time period (e.g., oneday, one week, one month, or any other time period) passes aftergenerating that data segment. In other words, as data gets old, thecontroller engine 310 can delete a portion of it and replace it withrespective statistical values. The use of statistical values instead ofthe whole set of data allows for significant reduction in the amount ofmemory storage used by the back-end system 222 or the amount of datatransmitted to the front-end system 224. Also, the use of thestatistical values can allow for fast display or analysis of datacorresponding to a relatively long time period (e.g., corresponding to aplurality of old data segments). The controller engine 310 can store themodified data (e.g., with the statistical values replacing dataportions) in the data base 306 as historical data. In someimplementations, the back-end system 222 can store the data segments incompressed or uncompressed form in the database 306 or in a randomaccess memory (RAM).

FIG. 12 shows a signaling diagram illustrating a method 1200 ofacquiring, by the front-end system 224, from the back-end system 222,data for display. The method 1200 can include initiating a clientapplication at the front-end system 224 (step 1210) and requesting datafor display from the back-end system 222 (step 1220). The method 1200can include the back-end system 222 generating a data block responsiveto the request of data (step 1230), and sending the data block to thefront-end system 224 (step 1240). The method 1200 can include thefront-end system 224 storing the data block in a first layer of cachememory (step 1250), and generating one or more data sub-blocks based onthe data block and storing them in one or more higher layers of thecache memory (step 1260). As used herein, a data block can include adata file.

FIG. 13 is a block diagram illustrating data blocks and data sub-blocksassociated with the back-end system 222 and the front-end system 224. Inparticular, the back-end system 222 can generate data blocks 1320 a-1320c (referred to herein individually or in combination as data blocks1320) based on the acquired data 1310 for sending to the front-endsystem 224. A front-end end computing device 223 can generate sub-blocks1330 a-1330 c (referred to herein individually or in combination as datasub-block(s) 1330) based on data associated with a received data block1320 a, and store that data block 1320 and the generated data sub-blocks1330 at different layers of a cache memory.

Referring back to FIGS. 12 and 13, the method 1200 can include a clientdevice 223 initiating a client application associated with the CEMMsystem 220. The client application can include a software application,which when executed enables (or causes) the client device 223 tocommunicate with the computer server 221 (or the back-end system 222),receive data from the back-end system 222, and display the receiveddata, for example, according to one or more of the visual modesdescribed above with regard to FIGS. 8A-8C. A user of the client device223 can initiate (or launch) the client application. The initiation ofthe client application can include the client device 223 receiving, viaa respective UI, user authentication input data, such as login name andpassword, biometric authentication data, barcode scan data, the like, ora combination thereof.

The client device 223 can identify a user profile based on the userauthentication input data. The user profile can include a useridentifier (ID), an indication of a user access level, user locationinformation, a functional mode with the user, one or more visual modes,or a combination thereof. The functional mode can be indicative offunctional aspects of the computing and network environment 210 or atype of data of interest to the user. For example, the functional modecan be indicative of network monitoring, cyber security monitoring,compliance monitoring, system architecture monitoring, system loadmonitoring, the like, or a combination thereof. For a user who is anetwork monitoring operator of the computing and network environment210, the corresponding user profile can be indicative of networkmonitoring as the respective functional mode. Also, the user profile ofa user responsible for monitoring compliance of the computing andnetwork environment 210 can be indicative of compliance monitoring asthe respective functional mode. The functional mode, for a user, can beindicative of the type of data that user would be most likely interestedin when he initiates a client application. The user profile informationcan include an indication of a plurality of cache memory layers of theclient device 223 on which the client application is running. Forexample, the user profile information can include indication(s) of thenumber of layers, the storage capacity of each layer, or a combinationthereof. The user profile information can also include informationindicative of hardware or software characteristics of the client device221 (or the front-end system 224) on which the client application isrunning.

The method 1200 can include the client device 223 sending a data requestto the back-end system, responsive to the initiation of the clientapplication (step 1220). The data request can include user profileinformation, such as user ID, user functional mode, user access level,user location information, one or more visual modes associated with theuser, or a combination thereof. In some implementations, the datarequest can be an indication of the initiation of the client applicationby the user identifiable via the user profile information. For example,the polarizing filter engine 318 can retrieve user profile data storedin the client device 223, generate a data request, and send thegenerated data request to a computer server 221. In someimplementations, the polarizing filter engine 318 can insert indicationsof specific data in the data request.

The client application can provide the user with an UI to specify thetype(s) of data (e.g., in terms of scope, or timing) he is interested inwhen setting his user profile or when making a data request. Forexample, the provided UI can allow the user to select specific timeintervals, specific assets, specific functional aspects of the computingand network environment 210, specific geographic location, or acombination thereof. In some instances, the client application, Uponlaunch on the client device 223, can prompt the user to select afunctionality profile or an expertise vector for which data is to beacquired from the back-end system 222 and displayed. Functional profilesor expertise vectors can include general, network, cyber security,storage, risk, business, legal, or compliance. Each of these functionalprofiles or expertise vectors can represent a separate angle formonitoring the computing and network environment 210. In particular,each of the functional profiles or expertise vectors can be associatedwith a respective data container to be acquired from the back-end system222. The polarizing filter engine 318 can incorporate an indication ofuser's selection in the data request.

The method 1200 can include the server application generating a datablock (also referred to herein as data container 1320) for transmittingto the client application (step 1230). Responsive to the data request,the computer server 221 (or the back-end system 222) can initiate (orlaunch) a server application for handling data requests from the clientapplication. The server application can include the engines of theback-end system described with regard to FIG. 3. The controller engine310 can determine a portion of the acquired data 1310 stored in a memory(e.g., a random access memory (RAM)) or in database 306 to generate thedata block.

The controller engine 310 can identify data segments and/or sub-segmentsthat are related to the user's functional profile. For example, if theuser's functional profile is indicative of cyber security monitoring,the controller engine 310 can identify data segments or sub-segmentsincluding data related to vulnerabilities and affected assets, potentialcyber security threats, abnormal behavior or activity associated withone or more assets, the firewall, or a combination thereof. For example,the controller engine 310 can identify data segments 1302 c, 1302 d, and1302 g to incorporate in data block 1320 a. The controller engine 310can identify data segments 1302 b, 1302 e, and 1302 f to incorporate indata block 1320 b. The controller engine 310 can identify data segments1302 a and 1302 h-1302 k to incorporate in data block 1320 c.

The controller engine 310 can also identify data segments orsub-segments that relate to recent events or alerts, such as recentlydetected cyber security threat(s), recently published vulnerabilitiesand potentially affected assets, recent asset outages (e.g., servers ordevices of the computing and network environment 210 that recently wentdown or non-responsive), assets abnormal behavior (e.g., assets understress or generating unusual traffic), or a combination thereof. Thecontroller engine 310 may identify data segments or sub-segments thatrelate to recent events or alerts independently of the user functionalmode or the user profile information.

The controller engine 310 may be configured to send data indicative ofrecent events or alerts or a portion thereof (e.g., those associatedwith a given geographic location) to all, or a group of, usersregardless of their functional modes or regardless of the functionalaspects of the computing and network environment 210 they may beinterested in. For example, a data block for a network operator mayinclude data related to recent cyber security alerts or recentlydetected threats in addition to data indicative of interconnections andtraffic between various assets.

The back-end system 222 or the controller engine 310 can generate a datablock (or data container) based on user functional profile (or expertisevector) information indicated in the data request or associated with theuser. Generating a data block specific to the user of the clientapplication or to a group of users sharing similar functional profilesallows rapid data access and rapid data transfer. In particular,defining the data to be fetched and transmitted by the back-end system222 based on the functional profile information or expertise vectorinformation allows the controller engine 310 to fetch and transmit onlydata that is relevant to the user of the client application, andtherefore, allow for efficient use of computational and communicationresources associated with the back-end system 222 or a computer server221 thereof.

The controller engine 310 may create and maintain a set of data pointersindicative of the data block 1320. Each data pointer can be pointing toa respective identified data segment or sub-segment. For example, thecontroller engine 310 may create data pointers 1304 c, 1304 d, and 1304g pointing, respectively, to data segments 1302 c, 1302 d, and 1302 g ingenerating data block 1320 a. The controller engine 310 may create datapointers 1304 b, 1304 e, and 1304 f pointing, respectively, to datasegments 1302 b, 1302 e, and 1302 f in generating data block 1320 b. Thecontroller engine 310 may create data pointers 1304 a and 1304 h-1304 kpointing, respectively, to data segments 1302 a and 1302 h-1302 k ingenerating data block 1320 c. The back-end system 222 may store ormaintain created pointers for a data block instead of storing the datablock 1320 itself. The controller engine 310 may create one or morepointers associated with a data block 1320 to point to one or more otherexisting data blocks (or to pointers thereof). For example, pointer 1305a is used to define data block 1320 a and it points to data block 1320 b(or pointer thereof). Also, pointers 1305 b and 1305 c are used todefine data block 1320 b and they point to data blocks 1320 a and 1320c, respectively. In fact, each of pointers 1305 a-130 d is a pointer ofone data block and is pointing to a data portion or a pointer of anotherdata block.

Data blocks 1320 a, 1320 b, and 1320 c can be associated with separateusers, separate client applications, or separate types of functionalprofiles. The controller engine 310 may be configured to maintain asingle set of pointers associated with a corresponding data block forusers sharing the same functional profile. The controller engine 310 mayupdate the set of pointers (e.g., to point to distinct data segments orsub-segments) as new data is acquired by the data collection engine 304or the asset profiling engine 312. For example, if the data block 1320 ais defined to include vulnerability data associated with the latestvulnerability scan, the controller engine 310 can update the set ofpointers upon new vulnerability scan data is received by the datacollection engine. The controller engine 310 may delete the set ofpointers associated with a data block if no corresponding user is loggedin or no corresponding client application is running. Before deletingthe set of pointers, the controller engine 310 may update pointerspointing to that set of pointers in other data blocks to have them pointto data segments in the acquired data 1310 stored in memory or data base306. Maintaining a set of pointers defining a data block instead of astoring and maintaining a copy of that data block allows for memorystorage reduction at the back-end system 222. Also, updating a set ofpointers as new data is acquired by the data collection engine 304 orthe asset profiling engine 312 can be faster than retrieving new datasegments and updating the corresponding data block. In someimplementations, the back-end system 222 can store and maintain a copyof the data block 1320 instead of maintaining pointers defining thatdata block 1320.

The controller engine 310 can generate a data block (e.g., data block1320a) based on the identified data segments or sub-segments for sendingto the client application. In generating the data block 1320 a, thecontroller engine 310 can retrieve data segments or sub-segments (e.g.,data segments 1302 c, 1302 d, and 1302 g) pointed to by pointers of datablock 1320 a (e.g., pointers 1304 c, 1304 d, and 1304 g). The controllerengine 310 can combine the retrieved data segments or sub-segments intoa single data block or data container. The controller engine 310 may tageach data segment or sub-segment in the data block with correspondingmetadata. The metadata for a given data segment or sub-segment caninclude a priority indicator, a ranking value, date or timinginformation, one or more asset IDs, or a combination thereof. Thepriority indicator for a given data segment or sub-segment can beindicative of a priority (or relevance) level. The priority (orrelevance) level can represent, for example, the likelihood of displayof corresponding data at the client application side or how relevant isthe corresponding data to the user of the client device. For example,the controller engine 310 may assign a relatively high priority level todata associated with a given asset that is regularly monitored by theuser of the client application. The controller engine 310 may assign arelatively high priority level to data segments or sub-segmentsassociated with high ranking values. The controller engine 310 may, forexample, assign a highest priority level to data segments orsub-segments that include data related to recent and critical events,such as new cyber security threats with high severity levels, outages ofassets with high dependencies, or detected violations of one or morecompliance, security or business requirements. In some implementations,the controller engine 310 may arrange data segments and/or sub-segmentsin the data block 1320 a according to respective priority levels. Insome implementations, each priority level may correspond to a cachememory layer of the client device 223. The tagging of data segments orsub-segments with respective metadata may be optional.

The method 1200 can include transmitting the data block to the clientdevice 221 (step 1240). The controller engine 310 can compress thegenerated data block 1320 before transmitting to the client device 223.The controller engine 310 can store the data block 1320 a in a cachememory associated with the software bus 302 and provide an indication ofthe destination of the data block 1320 a. The software bus 302 cantransmit the data block 1320 a to the client device 223. At the clientdevice 223, the polarizing filter engine 318 or the visualization engine320 can access the data block 1320 a for processing.

The method 1200 can include storing the data block 1320 a in a firstcache memory layer (or a RAM) of the client device 223 (step 1250). Thepolarizing filter engine 318 or a de-compression module can decompressthe data block 1320 a and store it a first layer cache or a RAM of theclient device. For example, depending on the size of the data block 1320a and the storage capacity of the first layer cache, the polarizingfilter engine 318 can decide where to store the data block 1320 a. Ifthe storage capacity of the first layer cache is large enough to storethe data block 1320 a, the polarizing filter engine 318 may store thedata block 1320 a in the first layer cache.

The method 1200 can include generating one or more data sub-blocks suchas data sub-blocks 1330 a-1330 c, referred to hereinafter individuallyor collectively as data sub-block(s) 1330, based on data of the datablock 1320 a, and storing the generated data sub-block(s) in a secondcache memory layer of the client device 223 (step 1360). The polarizingfilter engine 318 (or the visualization engine 320) can generate one ormore data sub-blocks 1330 representing data subsets of the data block1320 a. The polarizing filter engine 318 (or the visualization engine320) can scan the data block 1320 a (e.g., in decompressed form), forexample, to identify data segments or sub-segments, respective metadata(e.g., priority indicators), or data values in the data block 1320 a.

The polarizing filter engine 318 (or the visualization engine 320) cangenerate one or more data sub-blocks, such as data sub-blocks 1330 a-c,using data from the data block 1320 a. For instance, the polarizingfilter engine 318 (or the visualization engine 320) can generate a datasub-block 1330 for each visual mode. The polarizing filter engine 318(or the visualization engine 320) can compute graphical parameter (ordisplay data) values associated with each visual mode using data fromthe data block 1320 a. For example, with regard to the grid UI shown inFIG. 8A, the polarizing filter engine 318 (or the visualization engine320) can compute matrices (or data arrays) corresponding to grids 802and 804 when no primary or secondary filters 801 and 803 are applied(e.g., computing cell values for all assets with regard to grid 804 andcomputing cell values for all vulnerabilities with regard to grid 802).Also, with regard to the sphere UI in FIG. 8B, the polarizing filterengine 318 (or the visualization engine 320) can compute all segmentvalues graphical objects 812 and 814 when no filtering is applied. Withrespect the nodes UI shown in FIG. 8C, the polarizing filter engine 318(or the visualization engine 320) can compute values associated with allnodes (or all assets) and values representing edges between differentnodes (or assets). The polarizing filter engine 318 (or thevisualization engine 320) can group the computed graphical parametersfor each visual mode in a respective data sub-block 1330. For example,data sub-blocks 1330 a-c can be associated with the grid, sphere, andnodes UIs, respectively.

The polarizing filter engine 318 (or the visualization engine 320) maygenerate one or more other data sub-blocks that include expanded details(e.g., grid 806 or expanded details 818 and 820) associated with one ormore assets of the computing and network environment 210. The polarizingfilter engine 318 (or the visualization engine 320) may generate aseparate expanded data sub-block for each visual mode. In an expandeddata sub-block associated with a respective visual mode, the polarizingfilter engine 318 (or the visualization engine 320) may include expandeddetail data for all assets, or may include expanded detail data only fora subset of assets (e.g., assets with a ranking value exceeding a giventhreshold value). The one or more other data sub-blocks may include, forexample, data indicative of recent cyber security events or threatsrelated to one or more assets of the computer environment, alerts, assetoutages, detected abnormal behavior associated with one or more assets,detected breach of one or more specification requirements (e.g.,security, compliance or legal requirements), or a combination thereof.

In some implementations, the polarizing filter engine 318 (or thevisualization engine 320) may construct the data sub-blocks 1330 in adifferent way than described above. The polarizing filter engine 318 (orthe visualization engine 320) may group data segments or sub-segmentsassociated with the same priority level into a respective data sub-block1330. For example, considering priority levels from one to four, thepolarizing filter engine 318 can generate data sub-block 1330 aassociated with priority level two, sub-block 1330 b associated withpriority level three, and sub-block 1330 c associated with prioritylevel four. The polarizing filter engine 318 may omit generating a datasub-block 1330 associated with the lowest priority level.

The polarizing filter engine 318 or a cache manager can store the datablock 1320 a and the generated data sub-block(s) 1330 in a plurality ofcache memory layers. The polarizing filter engine 318 or the cachemanager can store the data block 1320 a and the data sub-blocks 1330a-1330 c in separate cache memory layers of the client device 223. Forexample, the polarizing filter engine 318 (or the cache manager) canstore the data bock 1320 in a first cache memory layer, and the datasub-blocks 1330 associated with various visual modes in a second cachememory layer that has a higher data access rate, higher average dataaccess rate, higher data access speed, or higher average data accessspeed than the first cache memory layer. The polarizing filter engine318 (or the cache manager) may store another set of generated datasub-blocks (e.g., data sub-blocks including expanding details data) in athird cache memory layer that has a higher data access rate, higheraverage data access rate, higher data access speed, or higher averagedata access speed than the first and second cache memory layers. In someimplementations, the third cache memory layer may have a higher dataaccess rate, higher average data access rate, higher data access speed,or higher average data access speed than the first cache memory layer,but a lower data access rate, lower average data access rate, lower dataaccess speed, or lower average data access speed than the second cachememory layer.

Generating (or computing) data sub-blocks including data indicative ofvarious graphical features for separate visual modes and storing suchdata sub-blocks in distinct cache memory layers of the client device 223allows for improved display speed at the client device. For example,having data sub-blocks representing display da associated with variousvisual modes available in cache memory allows the visualization engineto switch relatively fast between distinct visual modes responsive touser request (e.g., upon user selecting to switch from a first visualmode to a second visual mode). Also, having expanded detail dataavailable in a high speed cache memory allows quick retrieval ofexpanded detail data associated with a given asset upon selection ofthat asset by the user of the client device 223. The size of the datablock 1320 a may be large (e.g., larger than or equal to 0.5, 1 or 2mega Bite (MB)). Generating the data sub-blocks upfront and storing themin a multi-layer cache prevents display delays that may occur duefetching the whole data block 1320 and computing display data parameterseach time the user interacts with the displayed UI.

The client device 223 can have a multi-tier (or multi-layer) cachememory that includes a level-1 (L1) cache, level-2 (L2) cache, andlevel-3 (L3) cache. The L2 cache can have the highest data access speed,the L1 cache can have the second highest data access speed, and the L3cache can have the third highest data access speed. Furthermore, the L3cache can have larger storage capacity than the L1 or the L2 caches. Thepolarizing filter engine 318 (or the cache manager) can store the datablock 1320 a in the L3 cache, and store the generated data sub-blocks inthe L1 and L2 caches. For example, the polarizing filter engine 318 (orthe cache manager) can store data sub-blocks 1330 including display dataassociated with separate visual modes in the L1 cache, and store datasub-blocks including expanded detail data in the L2 cache. If noseparate data sub-blocks for expanded data are generated, the polarizingfilter engine 318 (or the cache manager) can store the data sub-blocks1330 including display data associated with separate visual modes in theL2 cache.

In the case where data sub-blocks are generated based on priority levelsof data segments or sub-segments, the polarizing filter engine 318 (orthe cache manager) can store, for example, data sub-block 1330 cassociated with the highest priority in the L2 cache which has thehighest data access speed, and store the data sub-blocks 1330 a and 1330b in L1 cache. In some implementations, the polarizing filter engine 318can store the data block 1320 a in the RAM, and store the datasub-blocks 1330 a-1330 c in the L1, L2 , and L3 caches, respectively.

A person skilled in the art should appreciate that the client device 223can have any number of cache memory layers. Accordingly, the polarizingfilter engine 318 (or the visualization engine 320) may generate anynumber of data sub-blocks, or any number of sets of data sub-blocks,from the received data block 1320 a. The polarizing filter engine 318(or the visualization engine 320) may store each data sub-block or eachset of data sub-block in a separate cache memory layer. The polarizingfilter engine 318 may store data sub-blocks including data associatedwith relatively high priority (or relevance) levels, relatively highranked assets, or high likelihood of being requested by the user in arelatively higher access speed cache memory layer, compared to otherdata sub-blocks including data associated with relatively lower priority(or relevance) levels, relatively lower ranked assets, or lowerlikelihood of being requested by the user.

The visualization engine 320 can access the data sub-blocks 1330 fromthe respective cache layers to display on one or more display devices(e.g., display screens) associated with the client device 223. Forexample, upon the user of the client device selecting via a UI (e.g., aUI associated with a respective visual mode) to display data associatedwith a given data sub-block, the visualization engine 320 can receive arespective data request from the UI and retrieve that data from thecache memory layer storing that data sub-block and provide the data tothe display device for display.

For a multi-core processor, each core processor can have its own L1 andL2 cache memories while the L3 cache can be shared by all processorcores. The polarizing filter engine 318 or the cache manager can storethe data block 1320 a in the L3 cache, and store the generated datasub-blocks 1330 in L1 and L2 caches associated with more than oneprocessor core. For example, the polarizing filter engine 318 or thecache manager can store data sub-block 1330 b in a L2 cache of a firstprocessor core and data sub-block 1330 c in a L2 cache of a secondprocessor core. In some implementations, the total number of prioritylevels may be equal to the total number of cache memory layers in theclient device 223, such that each cache memory layer can be associatedwith a respective priority level. The data storage arrangement wherehigh priority data is stored in cache memory layers with relatively highaccess speed allows data with higher priority to be displayed at ahigher speed than relatively low priority data.

When displaying data on the client device 223, the client applicationmay send indications of navigation actions to the back-end system 222.For example, as a network operator navigates and focuses on one or morenetwork assets, the client application can relay that information backto the server application or the back-end system 222. The serverapplication can predict other data to be sent to the client applicationdepending on which navigation tree the user of the client applicationhas followed. For example, the relay of such information can beindicative of (or interpreted by the back-end system 222 as) a requestfor continuous updates regarding the one or more network assets. Inresponse, the back-end system 222 or the server application can performasset profiling for the one or more network assets repeatedly.

The server application or back-end system 222 can send the acquiredasset profiling data in real time (immediately after the data isacquired), via the software bus 302, to the client application. Thecontroller engine 310 may keep track of data associated with each cachememory layer on the client device side. As new asset profiling databecomes available, the controller engine 310 can store such data in acache of the software bus 302, and set the destination address as theclient device 223 hosting the client application or a cache memory layer(e.g., L2 cache) of the client device storing data associated with oneor more network assets. The software bus 302 can have high speedcomponents and a relatively low speed components in both the back-end orserver side and the front-end or client side. At the back-end system222, the high speed component of the software bus 302 can cause theasset profiling data to be transmitted to the client device 223. At theclient device 223, the high speed component of the software bus 302 canupdate data stored at the L2 cache with the received asset profilingdata, therefore, allowing display of the received asset profiling datain real-time (e.g., within few second from the time of acquisition ofthe data). The relatively slower component of the software bus 302 canalso update the data block 1320 a with the received asset profilingdata.

Each method described in this disclosure can be carried out by computercode instructions stored on computer-readable medium. The computer codeinstructions, when executed by one or more processors of a computingdevice, can cause the computing device to perform that method.

While the disclosure has been particularly shown and described withreference to specific embodiments, it should be understood by thoseskilled in the art that various changes in form and detail may be madetherein without departing from the spirit and scope of the inventiondescribed in this disclosure.

While this disclosure contains many specific embodiment details, theseshould not be construed as limitations on the scope of any inventions orof what may be claimed, but rather as descriptions of features specificto particular embodiments of particular inventions. Certain featuresdescribed in this specification in the context of separate embodimentscan also be implemented in combination in a single embodiment.Conversely, various features described in the context of a singleembodiment can also be implemented in multiple embodiments separately orin any suitable subcombination. Moreover, although features may bedescribed above as acting in certain combinations and even initiallyclaimed as such, one or more features from a claimed combination can insome cases be excised from the combination, and the claimed combinationmay be directed to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated in a single software product or packaged intomultiple software products.

References to “or” may be construed as inclusive so that any termsdescribed using “or” may indicate any of a single, more than one, andall of the described terms.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain embodiments, multitasking and parallel processingmay be advantageous.

What is claimed is:
 1. A system for determining priority levels foraddressing vulnerabilities associated with a network of computerdevices, the system comprising: one or more servers communicativelycoupled to a computer network including a plurality of communicativelycoupled computing devices, the one or more servers include: a datacollection engine configured to: receive a plurality of specificationprofiles of the computer network, each of the specification profilesdefines one or more specification variables of the computer network oran asset thereof; and receive vulnerability data from a vulnerabilityscanner configured to scan the computer network for vulnerabilities, thevulnerability data indicative of a vulnerability associated with thecomputer network; a profiling engine configured to, for each of one ormore computing devices of the computer network,: establish, with thecomputing device, a respective communication channel; and receive, fromthe computing device via the respective communication channel, one ormore respective profiling parameters; a ranking engine configured to:compute, for each of a plurality of computing devices of the computernetwork affected with the vulnerability, a respective priority rankingvalue using the profile specification variables, the vulnerability dataand the profiling parameters received by the profiling engine, thepriority ranking value associated with each computing device affectedwith the vulnerability indicative of a priority level, compared to othercomputing devices of the computer network, for fixing the vulnerabilityin that computing device.
 2. The system of claim 1 further comprising acontroller engine configured to provide at least one of the priorityranking values for display on a display device.
 3. The system of claim 1further comprising a controller engine configured to transmit a set ofexecutable instructions to the plurality of computing devices of thecomputer network affected with the vulnerability according to an orderdefined based on the priority ranking values.
 4. The system of claim 1further comprising a controller engine configured to: determine one ormore inconsistencies associated with the one or more computing devicesin the vulnerability data or the plurality of specification profiles;provide an indication of the one or more computing devices to theprofiling engine, the profiling engine establishing the one or morerespective communication channels with the one or more computingdevices.
 5. The system of claim 4 further comprising a controller engineconfigured to update the vulnerability data using at least one of theprofiling parameters received by the profiling engine from the one ormore computing devices.
 6. The system of claim 1, wherein the pluralityof specification profiles include at least one of a service levelagreement (SLA) profile, security profile, redundancy profile, riskprofile, legal profile, ownership profile, and compliance profile. 7.The system of claim 1, wherein the one or more parameters received bythe profiling engine from each of the one or more computing devicesinclude at least one of a status parameter, memory usage parameter,processing power usage parameter, or network parameter.
 8. The system ofclaim 1, wherein receiving vulnerability data includes the datacollection system: receiving vulnerability data from a plurality ofvulnerability scanners; and merging the vulnerability data from theplurality of vulnerability scanners.
 9. The system of claim 1, whereinthe data collection engine is further configured to: receive, from oneor more remote resources, data associated with publishedvulnerabilities; and supplement the vulnerability data from thevulnerability scanner with the data associated with publishedvulnerabilities.
 10. The system of claim 1, wherein the data collectionengine is further configured to: compress data including thevulnerability data, the profile specification profiles, the profilingparameters, and the priority ranking values, the system furtherincluding a controller engine configured to provide the compressed datato a display device.
 11. The system of claim 1 further comprising acontroller engine configured to determine functional dependenciesbetween at least two computing devices of the computer network based onat least one of the specification profiles or the profiling parameters.12. The system of claim 11, wherein the ranking engine is configured tocompute the priority ranking values based on the functionaldependencies.
 13. A method of determining priority levels for processingvulnerabilities associated with a network of computer devices, themethod comprising: receiving, by one or more computer serverscommunicatively coupled to a computer network, a plurality ofspecification profiles associated with the computer network, each of thespecification profiles defining one or more specification variables ofthe computer network or an asset thereof; receiving, by the one or morecomputer servers, vulnerability data from a vulnerability scannerconfigured to scan the computer network for vulnerabilities, thevulnerability data indicative of a vulnerability associated with thecomputer network; establishing, by the one or more computer servers, acommunication channel with a computing device of the computer network;receiving, by the one or more computer servers, one or more profilingparameters from the computing device via the communication channel;computing, by the one or more computer servers, for each of a pluralityof computing devices of the computer network affected with thevulnerability, a respective priority ranking value using the profilespecification variables, the vulnerability data and the one or moreprofiling parameters, the priority ranking value for each computingdevice affected with the vulnerability indicative of a priority levelfor fixing the vulnerability in that computing device compared to othercomputing devices of the computer network.
 14. The method of claim 13further comprising providing, by the one or more computer servers, atleast one of the priority ranking values for display on a displaydevice.
 15. The method of claim 13 further comprising transmitting, bythe one or more computer servers, a set of executable instructions tothe plurality of computing devices of the computer network affected withthe vulnerability according to an order defined based on the priorityranking values.
 16. The method of claim 13 further comprising:determining, by the one or more computer servers, one or moreinconsistencies in the vulnerability data or the plurality ofspecification profiles, the one or more inconsistencies associated withthe computing device; providing, by the one or more computer servers, anindication of the computing device to the profiling engine, theprofiling engine establishing the communication channel with thecomputing device; and updating, by the one or more servers, thevulnerability data based on the one or more profiling parametersreceived by the profiling engine from the computing device.
 17. Themethod of claim 13, wherein receiving vulnerability data includes thedata collection system: receiving vulnerability data from a plurality ofvulnerability scanners; and merging the vulnerability data from theplurality of vulnerability scanners.
 18. The method of claim 13comprising: receiving, by the one or more computer servers, dataassociated with published vulnerabilities from one or more remoteresources; and supplementing, by the one or more computer servers, thevulnerability data from the vulnerability scanner with the dataassociated with published vulnerabilities.
 19. The method of claim 13further comprising: determining, by the one or more computer servers,functional dependencies between at least two computing devices of thecomputer network based on at least one of the specification profiles orthe profiling parameters; and computing, by the one or more computerservers, the priority ranking values based on the functionaldependencies.
 20. A computer-readable medium with computer codeinstructions stored thereon, the computer code instructions whenexecuted by one or more processors cause the one or more processors to:receive a plurality of specification profiles associated with a computernetwork, each of the specification profiles defining one or morespecification variables of the computer network or an asset thereof;receive vulnerability data from a vulnerability scanner configured toscan the computer network for vulnerabilities, the vulnerability dataindicative of a vulnerability associated with the computer network;establish a communication channel with a computing device of thecomputer network; receive one or more profiling parameters from thecomputing device via the communication channel; compute, for each of aplurality of computing devices of the computer network affected with thevulnerability, a respective priority ranking value using the profilespecification variables, the vulnerability data and the one or moreprofiling parameters, the priority ranking value for each computingdevice affected with the vulnerability indicative of a priority levelfor fixing the vulnerability in that computing device compared to othercomputing devices of the computer network.